查看端口占用及关闭
查看已经连接的服务端口(ESTABLISHED)
netstat -a
查看所有的服务端口(LISTEN,ESTABLISHED)
netstat -ap
查看指定端口,可以结合grep命令:
netstat -ap | grep 8080
或使用lsof命令:
lsof -i:8000
若要关闭使用这个端口的程序,使用kill + 对应的pid
kill -9 PID号
netstat -a
netstat -ap
netstat -ap | grep 8080
lsof -i:8000
kill -9 PID号
apt apt-get
apt install 普通安装软件
apt-get -f install 修复安装
apt-get –reinstall install 重新安装
apt-get remove: 卸载软件
apt-get purge: 卸载软件和配置文件
apt-get autoremove: 移除没有使用的依赖
apt-get clean: 删除/var/cache/apt/archives/下的所有deb包
apt-get autoclean: 删除/var/cache/apt/archives/下的过期deb包
普通安装:dpkg -i package_name.deb
移除式卸载:dpkg -r pkg
清除式卸载:dpkg -P pkg
源码安装(.tar、tar.gz、tar.bz2、tar.Z)
先解压源码包,然后进入到解压出的目录中,建议先读一下README之类的说明文件,不同源代码包或者预编译包可能存在差异。
建议使用ls -F –color或者ls -F命令查看一下可执行文件,可执行文件会以*号的尾部标志。
一般依次执行
# ./configure
# make
# make install
dpkg 使用文本文件来作为数据库.通称在 /var/lib/dpkg 目录下. 通称在 status 文件中存储软件状态,和控制信息. 在 info/ 目录下备份控制文件, 并在其下的 .list 文件中记录安装文件清单, 其下的 .mdasums 保存文件的 MD5 编码。
# ll /var/lib/dpkg
# dpkg -l > dpkg.txt
# cat dpkg.txt
如果觉得 dpkg 的参数过多, 不利于记忆的话, 完全可以使用 dpkg-query 进行 dpkg 数据库查询
apt-cache search # ——(package 搜索包)
apt-cache show #——(package 获取包的相关信息,如说明、大小、版本等)
apt-get install # ——(package 安装包)
apt-get install # —–(package –reinstall 重新安装包)
apt-get -f install # —–(强制安装, “-f = –fix-missing”)
apt-get remove #—–(package 删除包)
apt-get remove –purge # ——(package 删除包,包括删除配置文件等)
apt-get autoremove –purge # —-(package 删除包及其依赖的软件包+配置文件等(只对6.10有效,强烈推荐))
apt-get update #——更新源
apt-get upgrade #——更新已安装的包
apt-get dist-upgrade # ———升级系统
apt-get dselect-upgrade #——使用 dselect 升级
apt-cache depends #——-(package 了解使用依赖)
apt-cache rdepends # ——(package 了解某个具体的依赖)
apt-get build-dep # ——(package 安装相关的编译环境)
apt-get source #——(package 下载该包的源代码)
apt-get clean && apt-get autoclean # ——–清理下载文件的存档 && 只清理过时的包
apt-get check #——-检查是否有损坏的依赖
dpkg -S /path/to/filename #——-查找filename属于哪个软件包
apt-file search filename #——-查找filename属于哪个软件包
apt-file list packagename #——-列出软件包的内容
apt-file update #——–更新apt-file的数据库
dpkg –info “软件包名” 列出软件包解包后的包名称.
dpkg -l 列出当前系统中所有的包.可以和参数less一起使用在分屏查看. (类似于rpm -qa)
dpkg -l |grep -i “软件包名” 查看系统中与”软件包名”相关联的包.
dpkg -s 查询已安装的包的详细信息.
dpkg -L 查询系统中已安装的软件包所安装的位置. (类似于rpm -ql)
dpkg -S 查询系统中某个文件属于哪个软件包. (类似于rpm -qf)
dpkg -I 查询deb包的详细信息,在一个软件包下载到本地之后看看用不用安装.
dpkg -i 手动安装软件包(不能解决软件包依赖性问题),如果在安装某一个软件包的时候遇到了软件依赖的问题,可以用apt-get -f install在解决信赖性这个问题.
dpkg -r 卸载软件包.不是完全的卸载,它的配置文件还存在.
dpkg -P 全部卸载(但是还是不能解决软件包的依赖性的问题)
dpkg -reconfigure 重新配置
ls -l /dev | grep cdrom
查询其中的cdrom光盘镜像。回车后看到有个sr0的文件,是个链接文件,记住它前面的名字cdrom。
sudo mount /dev/cdrom /mnt
回车后即可完成挂载
cd /mnt 回车输入命令:ls。就可以看到目录里面的文件
sudo ./install 安装tools
创建用户有两条命令:adduser和useradd,对应着两条删除用户的命令:deluser和userdel。
这两种命令之间的区别:
adduser:会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码。
useradd:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本。
sudo adduser sweet
如果需要让此用户有root权限,执行命令:
root@ubuntu:~# sudo vim /etc/sudoers
修改文件如下:
User privilege specification
root ALL=(ALL) ALL
sweet ALL=(ALL) ALL
保存退出时候须在保存命令加!号,例如(:wq!),linuxidc用户就拥有了root权限。
用户属于sudo组,用户就是管理员用户了,可以使用sudo命令提升权限了。增加sudo用户组的命令如下:
sudo usermod -G sudo sweet
deluser
只删除用户:sudo deluser tt
连同用户的主目录和邮箱一起删除:sudo deluser –remove-home tt
连同用户拥有的所有文件删除:sudo deluser –remove-all-files tt
userdel
只删除用户:sudo userdel tt
连同用户主目录一起删除:sudo derlser -r tt
如果创建时主目录已经存在,即主目录不属于当前要删除的用户,则无法删除主目录。
常用软件下载:
jenins: wget http://ftp-chi.osuosl.org/pub/jenkins/war/2.208/jenkins.war
Netplan是Ubuntu 17.10中引入的一种新的命令行网络配置实用程序,用于在Ubuntu
系统中轻松管理和配置网络设置。它允许您使用YAML抽象来配置网络接口。它可与NetworkManager和systemd-networkd网络守护程序(称为渲染程序,您可以选择使用其中的哪一个)一起作为内核的接口。
它读取/etc/netplan/*.ymal
中描述的网络配置,并且可以将所有网络接口的配置存储在这些文件中。
在本文中。我们将解释如何使用Netplan实用程序在Ubuntu 18.04中为网络接口配置网络静态或动态IP地址
重要提示:如果YAML文件不是由发行版安装程序创建的,则可以使用此命令为渲染器生成所需的配置。
sudo netplan generate
另外,自动生成的文件可能在桌面,服务器,云实例等上有不同的文件名,但是/etc/netplan/*.yaml
下的所有文件将被netplan
读取。
sudo vim /etc/netplan/xxxx.ymal
然后在ethernet
部分添加以下配置。
network:
ethernets:
ens33:
addresses:
- 192.168.0.118/24
dhcp4: false
gateway4: 192.168.0.1
nameservers:
addresses:
- 8.8.8.8
search: []
version: 2
保存该文件并退出。然后使用以下netplan
命令应用最近的网络更改。
sudo netplan apply
可以通过查看netplan
手册页找到更多信息和配置选项。
man netplan
echo "net.ipv6.conf.all.disable_ipv6 = 1" >>/etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >>/etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" >>/etc/sysctl.conf
reboot
设置DNS resolvconf
vi /etc/systemd/resolved.conf
systemctl restart systemd-resolved
要自行设定DNS服务器有两个方法
(1)关闭systemd-resolvd服务
systemctl stop systemd-resolvd
systemctl disable systemd-resolvd
这样对/etc/resolv.conf做出的修改都能保存下来。
sudo apt install unbound
sudo rm -rf /etc/resolv.conf
sudo vim /etc/NetworkManager/NetworkManager.conf
在[main]
下面添加
dns=unbound
将dns服务替换为unbound
reboot
重启电脑即可,开机查看resolve.conf发现nameserver自动配置
/etc/network/interfaces
dns-nameservers 10.123.122.212
dns-nameservers 202.96.134.133
dns-nameservers 8.8.8.8
# nameserver 127.0.0.53
options edns0
search cnotax.com
通过resolvconf实现配置
resolvconfig应用可以实现DNS信息管理,可以通过下面的应用来安装此组件:
sudo apt-get install resolvconf
创建/etc/default/resolvconf缺省配置文件,添加相关环境变量
bob@ubuntu:/etc/resolvconf/resolv.conf.d$ cat /etc/default/resolvconf
TRUNCATE_NAMESERVER_LIST_AFTER_127=no
该环境变量影响保存到/etc/resolv.conf的DNS配置条数。向/etc/resolvconf/resolv.conf.d/base配置文件中添加DNS配置项。
bob@ubuntu:/etc/resolvconf/resolv.conf.d$ cat base
nameserver 10.220.0.11
nameserver 10.220.0.12
search infinera.com
使用下列配置命令使配置生效
sudo resolvconf -u
删除
apt-get remove --purge resolvconf
执行kubeadm init集群初始化时
[WARNING IsDockerSystemdCheck]: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”.
[警告IsDockerSystemdCheck]:检测到“cgroupfs”作为Docker cgroup驱动程序。 推荐的驱动程序是“systemd”。
vim /etc/docker/daemon.json
加入以下内容:
{
“exec-opts”:[“native.cgroupdriver=systemd”]
}
socat
是一个网络工具, k8s 使用它来进行 pod 的数据交互,出现这个问题直接安装socat
即可:
apt-get install socat
手动拉取镜像
flannel
的镜像可以使用如下命令拉到,如果你是其他镜像没拉到的话,百度一下就可以找到国内的镜像源地址了,这里记得把最后面的版本号修改成你自己的版本,具体的版本号可以用上面说的kubectl describe
命令看到:
docker pull quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64
等镜像拉取完了之后需要把镜像名改一下,改成 k8s 没有拉到的那个镜像名称
docker tag quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
在子节点执行kubeadm join
命令后返回超时错误
在master
节点上执行kubeadm token create --print-join-command
重新生成加入命令,并使用输出的新命令在工作节点上重新执行即可。
$ docker run --name some-nginx -p 80:80 -v /some/content:/usr/share/nginx/html:ro -itd nginx:1.17.6
$ docker run --name myphp-fpm -v ~/nginx/www:/www -d php:5.6-fpm
mkdir ~/nginx/conf/conf.d
在该目录下添加 ~/nginx/conf/conf.d/runoob-test-php.conf 文件,内容如下:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
php:9000: 表示 php-fpm 服务的 URL,下面我们会具体说明。
/www/: 是 myphp-fpm 中 php 文件的存储路径,映射到本地的 ~/nginx/www 目录。
docker run --name php-nginx -p 80:80 -d \
-v ~/nginx/www:/usr/share/nginx/html:ro \
-v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
--privileged=true --link myphp-fpm:php nginx
--privileged=true 解决权限
--link myphp-fpm:php: 把 myphp-fpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。
docker pull mysql:5.7
docker run –name mysql-5-7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d -v ~/www/data:/var/lib/mysql mysql:5.7
docker exec -it mysql-5-7 bash
mysql -uroot -p
GRANT ALL ON . TO ‘root’@’%’;
flush privileges;
exit
docker pull php:7.3-fpm
docker run –name php-fpm-7-3 -d -v ~/www/web:/var/www/html –link mysql-5-7:mysql php:7.3-fpm
#进入 php 容器后执行安装 mysql 扩展
docker exec -it php-fpm-7-3 bash
apt-get update
apt-get install -y libfreetype6 libfreetype6-dev libmcrypt-dev libmcrypt4 libcurl3-dev
apt install build-essential libprotobuf-dev libboost-dev openssl protobuf-compiler
docker-php-ext-install pdo pdo_mysql
docker restart php-fpm-7-3
docker pull nginx
docker run -d –name nginx -p 80:80 -v ~/www/web/:/usr/share/nginx/html -v ~/www/nginx/conf.d:/etc/nginx/conf.d –link php-fpm-7-3:php-fpm nginx
1.功能作用:解压缩zip文件
2.位置:/usr/bin/unzip
3.格式用法:unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
4.主要参数
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
-l 显示压缩文件内所包含的文件
-f 更新现有的文件
-t 检查压缩文件是否正确,但不解压
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中
-z 仅显示压缩文件的备注文字
-v 执行是时显示详细的信息。或查看压缩文件目录,但不解压
-T 将压缩文件内的所有文件的最新变动时间设为解压缩时候的时间
-x 指定不要处理.zip压缩文件中的哪些文件
-d 指定文件解压缩后所要存储的目录
-n 解压缩时不要覆盖原有的文件
-q 安静模式,执行时不显示任何信息
-o 不必先询问用户,unzip执行后覆盖原有文件
-a 对文本文件进行必要的字符转换
-j 不处理压缩文件中原有的目录路径
-aa 把所有的文件目录当作文本处理
-U use escapes for all non-ASCII Unicode
-UU 忽略Unicode编码字符
-C 压缩文件中的文件名称区分大小写
-L 将压缩文件中的全部文件名改为小写
-X 解压缩时同时回存文件原来的UID/GID
-V 保留VMS的文件版本信息
-K 保留文件的setuid/setgid/tacky属性
-M 将输出结果送到more程序处理
-O 指定字符编码为DOS,Windows和OS/2
-I 指定字符编码为UNIX
5.应用实例
1、把文件解压到当前目录下
unzip test.zip
2、如果要把文件解压到指定的目录下,需要用到-d参数。
unzip -d /temp test.zip
3、解压的时候,有时候不想覆盖已经存在的文件,那么可以加上-n参数
unzip -n test.zip
unzip -n -d /temp test.zip
4、只看一下zip压缩包中包含哪些文件,不进行解压缩
unzip -l test.zip
5、查看显示的文件列表还包含压缩比率
unzip -v test.zip
6、检查zip文件是否损坏
unzip -t test.zip
7、将压缩文件test.zip在指定目录tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件
docker pull registry
docker run -itd –name my_registry -p 5000:5000 -v /opt/registry_images:/var/lib/registry registry:2.7.1
vim /etc/docker/daemon.json
增加自己的仓库
{
“insecure-registries”:[“192.168.88.128:5000”],
“registry-mirrors”:[“https://cuzn52fX.mirror.aliyuncs.com”,”https://registry.docker-cn.com”,”https://reg-mirror.qiniu.com”],
“exec-opts”: [“native.cgroupdriver=systemd”]
}
systemctl daemon-reload
systemctl restart docker
Copy到其它机器
scp /etc/docker/daemon.json 192.168.0.28:/etc/docker
查看仓库中的镜像信息
curl http://192.168.88.88:5000/v2/_catalog
{“repositories”:[“coreos/flannel”,”rabbitmq”]}
curl http://192.168.88.88:5000/v2/rabbitmq/tags/list
{“name”:”rabbitmq”,”tags”:[“3-management”]}