分类目录Ubuntu

查看端口占用及关闭

查看已经连接的服务端口(ESTABLISHED)

netstat -a

查看所有的服务端口(LISTEN,ESTABLISHED)

netstat -ap

查看指定端口,可以结合grep命令:

netstat -ap | grep 8080

或使用lsof命令:

lsof -i:8000

若要关闭使用这个端口的程序,使用kill + 对应的pid

kill -9 PID号

Ubuntu软件安装及卸载

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方式

普通安装: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

Ubuntu中软件包的查询

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                           重新配置

ubuntu 安装 parallels tools

ls -l /dev | grep cdrom

查询其中的cdrom光盘镜像。回车后看到有个sr0的文件,是个链接文件,记住它前面的名字cdrom。

sudo mount /dev/cdrom  /mnt

回车后即可完成挂载

cd /mnt 回车输入命令:ls。就可以看到目录里面的文件

sudo ./install 安装tools

Ubuntu系统常用配制

  • 配制超级管理员
    sudo passwd root
  • 切换用户
    su – root / su root 区别是否切换到用户目录
  • 更改计算机名
    buntu Server 18.04直接进入/etc/hostname修改主机名的时候,重启后发现没有修改成功,这是因为Ubuntu18.04与之前的版本有些不同,需要先做一些额外的操作
    sudo vim /etc/cloud/cloud.cfg,将preserve_hostname设置为true
    sudo vim /etc/hostname,修改主机名
    重启服务器
  • 支持exfat
    sudo apt-get install exfat-utils
  • 安装UnZip exFat
    sudo apt-get install exfat-utils

创建用户有两条命令: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
如果创建时主目录已经存在,即主目录不属于当前要删除的用户,则无法删除主目录。

Ubuntu 常用安装软件

常用软件下载:
jenins: wget http://ftp-chi.osuosl.org/pub/jenkins/war/2.208/jenkins.war

Ubuntu Server 设置IP

NetplanUbuntu 17.10中引入的一种新的命令行网络配置实用程序,用于在Ubuntu系统中轻松管理和配置网络设置。它允许您使用YAML抽象来配置网络接口。它可与NetworkManagersystemd-networkd网络守护程序(称为渲染程序,您可以选择使用其中的哪一个)一起作为内核的接口。

它读取/etc/netplan/*.ymal中描述的网络配置,并且可以将所有网络接口的配置存储在这些文件中。
在本文中。我们将解释如何使用Netplan实用程序在Ubuntu 18.04中为网络接口配置网络静态或动态IP地址

列出Ubuntu上的所有活动网络接口

ifconfig -a

Ubuntu设置静态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
  • ens33:网络接口名称
  • dhcp4:接收IPV4接口的dhcp属性
  • dhcp6:接收IPV6接口的dhcp属性
  • addresses:接口的静态地址序列
  • gateway4:默认网关的IPV4地址
  • Nameservers:DNS服务器地址,以,号分割

保存该文件并退出。然后使用以下netplan命令应用最近的网络更改。

sudo netplan apply

可以通过查看netplan手册页找到更多信息和配置选项。

man netplan

关闭ipv6

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

K8问题解决

执行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”]

}

 

WARNING FileExisting-socat

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重新生成加入命令,并使用输出的新命令在工作节点上重新执行即可。

Nginx

docker nginx

$ docker run --name some-nginx -p 80:80 -v /some/content:/usr/share/nginx/html:ro -itd nginx:1.17.6

Nginx + PHP 部署

$ 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

ubuntu zip文件

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命令覆盖原先的文件

Registry 私有仓库

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”]}