Linux命令笔记

Linux系统篇**:**

1,第一个命令:cat 查看文件内容

查看你的系统版本

[root@node ~]# cat /etc/redhat-release

CentOS Linux release 7.9.2009 (AltArch)

[root@localhost ~]# cat -n /etc/passwd

1 root❌0:0:root:/root:/bin/bash

2 bin❌1:1:bin:/bin:/sbin/nologin

3 daemon❌2:2:daemon:/sbin:/sbin/nologin

4 adm❌3:4:adm:/var/adm:/sbin/nologin

5 lp❌4:7:lp:/var/spool/lpd:/sbin/nologin

6 sync❌5:0:sync:/sbin:/bin/sync

7 shutdown❌6:0:shutdown:/sbin:/sbin/shutdown

8 halt❌7:0:halt:/sbin:/sbin/halt

9 mail❌8:12:mail:/var/spool/mail:/sbin/nologin

10 operator❌11:0:operator:/root:/sbin/nologin

11 games❌12💯games:/usr/games:/sbin/nologin

12 ftp❌14:50:FTP User:/var/ftp:/sbin/nologin

13 nobody❌99:99:Nobody:/:/sbin/nologin

14 systemd-network❌192:192:systemd Network Management:/:/sbin/nologin

15 dbus❌81:81:System message bus:/:/sbin/nologin

16 polkitd❌999:998:User for polkitd:/:/sbin/nologin

17 sshd❌74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

18 postfix❌89:89::/var/spool/postfix:/sbin/nologin

19 chrony❌998:996::/var/lib/chrony:/sbin/nologin

20 wm❌1000:1000:wm:/home/wm:/bin/bash

[root@localhost ~]#

以上命令是添加“-n”输出信息是显示行号。

[root@localhost ~]# cat >> textfile1<< EOF 注:我们向textfile1文件追加内容;

> 此处为增加的内容

> EOF --结束标记

注:

1,把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里

cat -n textfile1 > textfile2

2,把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。

cat -b textfile1 textfile2 >> textfile3

3,cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容

4,cat 也可以用来制作 image file。例如要制作软碟的 image file,将软碟放好后打

cat /dev/fd0 > OUTFILE

**2,第二个命令:**uname 查看你的内核版本

[root@localhost ~]# uname -a

Linux localhost 4.4.18-348.6.1.el5 #1 SMP Tue May 21 15:34:22 EDT 2017 i686 i686 i386 GNU/Linux

接下来讲下看内核就这个-a参数就行了,比较全了,下面详细讲解:

Linux:显示内核名字

Localhost:显示主机名

4.4.18-348.6.1.el5:显示内核发行版本

#1 SMP Tue May 21 15:34:22 EDT 2017:显示内核发行时间

i686:显示主机的硬件架构名称

i686:显示处理器类型

i686:显示硬件平台

GNU/Linux:显示操作系统名称

**3,第三个命令:**ll -h 查看目录的文件信息

本人经常使用这个命令,原因是他给了你想要的所有信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

文件权限,所属组和所属主,文件大小,创建时间,文件名字。还有就是方便观看。

4,第四个命令:stat 查看文件信息

查看文件详细信息

[root@node ~]# stat anaconda-ks.cfg

File: ‘anaconda-ks.cfg’

Size: 1116 Blocks: 8 IO Block: 4096 regular file

Device: fd00h/64768d Inode: 102438560 Links: 1

Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)

Context: system_u:object_r:admin_home_t:s0

Access: 2021-09-15 00:00:36.819614671 -0400

Modify: 2021-09-15 00:00:15.060000128 -0400

Change: 2021-09-15 00:00:15.060000128 -0400

Birth: -

[root@node ~]#

根据以上信息可以看出文件的创建修改等信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5,第五个命令which查看可执行文件的位置。

[root@node ~]# which ls

alias ls=‘ls --color=auto’

​ /usr/bin/ls

[root@node ~]#

6,第六个命令:whereis 查看某个命令位置

是来定位某个命令的man手册和二进制源码的位置。

[root@node ~]# whereis ls

ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

[root@node ~]#

**7,第七个命令:**mkdir 在指定目录下创建一个目录

[root@node ~]# mkdir -p /a/b/c/d

Mkdir这个命令经常用到,一般情况下都是不加参数,直接和面加文件夹名字,但是我要个大家说的是 -p这个参数是,在你想创建多个目录或者你的路径没有这个目录的时候,他会自动帮你创建。

注:

-m, --mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask

-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;

-v, --verbose 每次创建新目录都显示信息

**8,第八个命令rm删除命令,**可以删除目录和文件

[root@node ~]# rm -rf /a/b/c/d/ —结尾加“/”删除d目录里的信息和文件,不加则删除d目录和d目录里面的所有信息。 有的人担心rm这个命令删除会造成生产故障,那就看看第九个命令吧

注:

-f, --force 忽略不存在的文件,从不给出提示。

-i, --interactive 进行交互式删除

-r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。

-v, --verbose 详细显示进行的步骤

**9,第九个命令:**alias 给命令设置别名

[root@node ~]# alias rm=‘echo “do not use rm command”’ 给rm命令设置别名

[root@node ~]# alias —查看别名信息

alias cp=‘cp -i’

alias l.=‘ls -d .* --color=auto’

alias ll=‘ls -l --color=auto’

alias ls=‘ls --color=auto’

alias rm=‘echo “do not use rm command”’

例:

[root@node ~]# touch a ----创建一个文件

[root@node ~]# rm a -----删除这个文件

do not use rm command a ----无法删除

[root@node ~]#

10,第十个命令hostname-ctl 更改主机名字

[root@node ~]# hostnamectl set-hostname abcd ----修改主机名字,最好用这个。

[root@node ~]hostname

abcd

[root@node ~]#

[root@master ~]# hostnamectl status —查看主机系统信息

Static hostname: master

​ Icon name: computer

​ Machine ID: a1136b8aca9b485a80be39d1119cff37

​ Boot ID: afe74e166c0a41a48fc73437315b6b60

Operating System: CentOS Linux 7 (AltArch)

​ CPE OS Name: cpe:/o:centos:centos:7:server

​ Kernel: Linux 5.11.12-300.el7.aarch64

Architecture: arm64

[root@master ~]#

11,第十一个命令:dmidecode 是查看系统服务器信息

包含了硬件服务器的所有信息,比如硬件服务器的版本,cpu信息,内存和服务器的序列号等。是一个很重要的命令。

[root@CentOS7 ~]# dmidecode -t ----执行这个命令,会弹出需要具体查看的选项信息 在参数“t”后面直接添加上在执行下就可以了。

dmidecode: option requires an argument – ‘t’

Type number or keyword expected

Valid type keywords are:

Bios —bios信息

System —系统信息

Baseboard —查看主板有关的信息

Chassis

Processor —查看cpu信息

Memory —查看内存信息

Cache ----查看缓存信息

Connector

Slot ----查看插槽有关的信息

[root@CentOS7 ~]# dmidecode -s system-manufacturer 获取服务器厂家

[root@CentOS7 ~]# dmidecode -s system-product-name 获取服务器类型

[root@CentOS7 ~]# dmidecode -s system-serial-number 获取服务器sn号

[root@CentOS7 ~]# dmidecode -s system-uuid 获取服务器uuid

[root@CentOS7 ~]# dmidecode | grep -P -A5 “Memory\s+Device”|grep Size|grep -v Range

查看内存插槽数

[root@CentOS7 ~]# dmidecode | grep -P ‘Maximum\s+Capacity’ 查看主板支持的最大内存容量

12,第十二个命令:dmegs 查看服务器硬件启动日志

可以查看系统检测硬件的日志,一般不需要。目前的服务器性能和稳定性都很好,我经常用它看以下信息:内存、硬盘、USB、TTY相关的信息

[root@CentOS7 ~]# dmesg | grep -i memory

[root@CentOS7 ~]# dmesg | grep -i dma

[root@CentOS7 ~]# dmesg | grep -i usb

[root@CentOS7 ~]# dmesg | grep -i tty

13,第十三个命令tracepath命令用来追踪路****由信息

[root@iZbp1fehdscdu2pfkdhbubZ ~]# tracepath www.baidu.com

1?: [LOCALHOST] pmtu 1500

1: 10.4.20.98 0.760ms

1: 10.4.8.98 0.667ms

2: 10.4.8.9 0.790ms

8: 202.97.101.114 9.794ms

9: 58.213.94.82 10.947ms

10: no reply

11: 58.213.96.114 11.873ms asymm 12

12: no reply

30: no reply

Too many hops: pmtu 1500

Resume: pmtu 1500

[root@iZbp1fehdscdu2pfkdhbubZ ~]# tracepath 8.8.8.8

1?: [LOCALHOST] pmtu 1500

1: 10.4.20.98 0.502ms

1: 10.4.20.98 0.521ms

2: 10.4.12.29 0.749ms

11: 202.97.6.6 49.129ms

12: 202.97.122.70 40.443ms

13: no reply

30: no reply

Too many hops: pmtu 1500

Resume: pmtu 1500

[root@iZbp1fehdscdu2pfkdhbubZ ~]#

总结:tracepath 这个命令是追踪路由用的,最多30跳。

**14,第十四命令:**ping 测试主机与主机的连通性

[root@CentOS7 ~]# ping -c 5 -i 0.7 8.8.8.8 ----ping五次每次间隔0.7秒

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=46.9 ms

64 bytes from 8.8.8.8: icmp_seq=3 ttl=128 time=34.6 ms

64 bytes from 8.8.8.8: icmp_seq=4 ttl=128 time=42.5 ms

— 8.8.8.8 ping statistics —

5 packets transmitted, 3 received, 40% packet loss, time 2426ms

rtt min/avg/max/mdev = 34.671/41.401/46.984/5.091 ms

[root@CentOS7 ~]#

总结:ping命令比较简单,日常用到的多,一般不加参数直接ping就可以了。

**15,第十五个命令:**ab这个命令是压测

之所以讲解这个命令是方便,虽然没有专业的工具性能强,达不到专业测试人员的需求,但是已经达到运维人员的使用需求了。

[root@CentOS7 ~]# yum install -y httpd-tools ----安装ab这个命令

[root@CentOS7 ~]# ab -c 10 -n 1000 http://127.0.0.1/

#指定并发请求数为10,总请求数为1000,对本机进行压力测试

This is ApacheBench, Version 2.3 <$Revision: 1430300 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)

Completed 100 requests

Completed 200 requests

Completed 300 requests

Completed 400 requests

Completed 500 requests

Completed 600 requests

Completed 700 requests

Completed 800 requests

Completed 900 requests

Completed 1000 requests

Finished 1000 requests

#以上是请求数

Server Software: Apache/2.4.6 —请求的服务端软件

Server Hostname: 127.0.0.1 —请求的地址

Server Port: 80 —请求的端口

Document Path: /

Document Length: 4897 bytes

Concurrency Level: 10 —请求次数

Time taken for tests: 0.053 seconds

Complete requests: 1000 —请求成功数

Failed requests: 0

。。。此处省滤部分信息

100% 2 (longest request)

[root@CentOS7 ~]#

总结:一般情况下从运维的角度出发,在服务器上需要测试时,可以使用ab这个命令既简单又实用。

16,第十六个命令curl是http命令行工具

它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。

[root@CentOS7 ~]# curl -o wm.html http://127.0.0.1 —“-o”参数是下载文件,在“-o”前加“-C”是断点续传。

% Total % Received % Xferd Average Speed Time Time Time Current

​ Dload Upload Total Spent Left Speed

100 4897 100 4897 0 0 636k 0 --:–:-- --:–:-- --:–:-- 797k

[root@CentOS7 ~]# ls

anaconda-ks.cfg initial-setup-ks.cfg wm.html

[root@CentOS7 ~]#curl http://127.0.0.1 不加参数就是测试网站是否可以访问

[root@CentOS7 ~]# curl -x 47.94.151.*:80 http://www.baidu.com -----x是指定一个代理地址再去访问相关网站

总结**:curl参数很多一般常用的就是下载文件和测试网站是否正常。**

**17,第十七个命令:**wget 主要是下载文件使用

[root@CentOS7 ~]# wget http://cn.wordpress.org/wordpress-3.1-zh_CN.zip

—常用的方式就是下载文件,不加参数直接使用。

–2021-11-22 05:03:56-- http://cn.wordpress.org/wordpress-3.1-zh_CN.zip

Resolving cn.wordpress.org (cn.wordpress.org)… 198.143.164.252

Connecting to cn.wordpress.org (cn.wordpress.org)|198.143.164.252|:80… connected.

HTTP request sent, awaiting response… 301 Moved Permanently

Location: https://cn.wordpress.org/wordpress-3.1-zh_CN.zip [following]

–2021-11-22 05:03:57-- https://cn.wordpress.org/wordpress-3.1-zh_CN.zip

Connecting to cn.wordpress.org (cn.wordpress.org)|198.143.164.252|:443… connected.

HTTP request sent, awaiting response… 200 OK

Length: 3448957 (3.3M) [application/zip]

Saving to: ‘wordpress-3.1-zh_CN.zip’

100%[=========================================================================================================================>] 3,448,957 930KB/s in 4.3s

2021-11-22 05:04:03 (780 KB/s) - ‘wordpress-3.1-zh_CN.zip’ saved [3448957/3448957]

[root@CentOS7 ~]# wget -c -O wm.zip http://cn.wordpress.org/wordpress-3.1-zh_CN.zip

–“-c”参数是断点续传,“-O” 参数是给下载的文件重命名。

[root@CentOS7 ~]#

**18,第十八个命令:**ip a 查看地址信息

[root@CentOS7 ~]# ip a —看到的网卡信息简洁些,直观些。日常使用这个命令多。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

​ valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

​ valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

link/ether 00:1c:42:f9:29:0e brd ff:ff:ff:ff:ff:ff

inet 10.211.55.73/24 brd 10.211.55.255 scope global noprefixroute dynamic eth0

​ valid_lft 973sec preferred_lft 973sec

inet6 fdb2:2c26:f4e4:0:e142:91a4:316b:56cf/64 scope global noprefixroute dynamic

​ valid_lft 2591522sec preferred_lft 604322sec

inet6 fe80::98d:50ba:5dd2:4e7e/64 scope link noprefixroute

​ valid_lft forever preferred_lft forever

19,第十九个命令:ifconfig 查看网卡信息

[root@CentOS7 ~]# ifconfig —看到的网卡信息更全些,并能看到流量信息。

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

​ inet 10.211.55.73 netmask 255.255.255.0 broadcast 10.211.55.255

​ inet6 fdb2:2c26:f4e4:0:e142:91a4:316b:56cf prefixlen 64 scopeid 0x0

​ inet6 fe80::98d:50ba:5dd2:4e7e prefixlen 64 scopeid 0x20

​ ether 00:1c:42:f9:29:0e txqueuelen 1000 (Ethernet)

​ RX packets 26926 bytes 21002833 (20.0 MiB)

​ RX errors 0 dropped 0 overruns 0 frame 0

​ TX packets 378396 bytes 538753653 (513.7 MiB)

​ TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

​ inet 127.0.0.1 netmask 255.0.0.0

​ inet6 ::1 prefixlen 128 scopeid 0x10

​ loop txqueuelen 1000 (Local Loopback)

​ RX packets 10086 bytes 5792982 (5.5 MiB)

​ RX errors 0 dropped 0 overruns 0 frame 0

​ TX packets 10086 bytes 5792982 (5.5 MiB)

​ TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@CentOS7 ~]#

[root@CentOS7 ~]# watch ifconfig ----这个命令实时观看网卡流量

**20,第二十个命令:**watch **—**实时查看一些相关系统数据

[root@CentOS7 ~]# watch -n 1 -d netstat -ant # 命令:每隔一秒高亮显示网络链接数的变化情况

[root@CentOS7 ~]# watch -n 1 -d ‘pstree|grep http’ # 每隔一秒高亮显示http链接数的变化情况。 后面接的命令若带有管道符,需要加’'将命令区域归整。

[root@CentOS7 ~]# watch ‘netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l’ # 实时查看模拟攻击客户机建立起来的连接数

[root@CentOS7 ~]# watch -n 10 ‘cat /proc/loadavg’ # 10秒一次输出系统的平均负载

Every 10.0s: cat /proc/loadavg Mon Nov 22 05:49:43 2021

0.00 0.02 0.00 1/465 23542

[root@CentOS7 ~]# watch -t uptime

[root@CentOS7 ~]# watch -d -n 1 netstat -ntlp

Every 1.0s: netstat -ntlp —实时关注端口信息 Mon Nov 22 05:48:44 2021

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1246/sshd

tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1243/cupsd

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 814/rpcbind

tcp6 0 0 :::22 ::😗 LISTEN 1246/sshd

tcp6 0 0 ::1:631 ::😗 LISTEN 1243/cupsd

tcp6 0 0 :::111 ::😗 LISTEN 814/rpcbind

tcp6 0 0 :::80 ::😗 LISTEN 22707/httpd

[root@CentOS7 ~]# watch -n 1 “df -i;df” # 监测磁盘inode和block数目变化情况

总结,这个watch 命令用的时候比较多,系统资源负载高的时候,经常需要实时关注。

**21,第二十一个命令:**top 这个是最常用的命令

查看系统资源实时信息的。

[root@CentOS7 ~]# top —直接回车进入视图

进入视图后,进行以下操作:

在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况:

在top基本视图中,敲击”f”进入另一个视图,在这里可以编辑基本视图中的显示字段:

在top基本视图中,敲击”u”然后输入用户名字,就可以看这个用户启动的进程:

在top基本视图中,按(SHIFT + W),以保存至到/root/.toprc目录的运行top命令的结果。

在top基本视图中,敲击”c”可以查看每个进程的启动详细路径信息:

[root@node1 ~]# top -Hp 21588 —21588是你在top中看到的某个进程的PID,这条命令是查看有关25188进程下面的子进程信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

22,第二十二个命令:uptime 查看系统负载的命令

[root@CentOS7 ~]# uptime

09:09:15 up 6:51, 3 users, load average: 0.01, 0.03, 0.00

上边–显示负载(最近一分钟,五分钟和十五分钟的系统负载),用户,和时间信息。

[root@CentOS7 ~]# uptime -s ----显示系统最开始运行的时间

2021-11-22 02:17:42

[root@CentOS7 ~]# uptime -p ----显示系统已经运行了多长时间了。

up 7 hours, 6 minutes

23,第二十三个命令:free 查看系统内存

[root@CentOS7 ~]# free ----不加参数查看到的信息是kb形式的

​ total used free shared buff/cache available

Mem: 1493960 613012 92056 15504 788892 778032

Swap: 2146300 6144 2140156

以上参数中,具体used是使用的多少内存,total是总内存。free加上buff/cache是可用内存。

[root@CentOS7 ~]# free -h ----加上参数“h”的话看到的信息更直观些。

​ total used free shared buff/cache available

Mem: 1.4G 598M 89M 15M 770M 759M

Swap: 2.0G 6.0M 2.0G

[root@CentOS7 ~]# free -h -s 3 ----加上“-s 3”的参数,是实时观看内存使用,直到你按下 ctrl + c

**24,第二十四个命令:**vmstat是监控工具

—具体数值怎么看,主要看“free”内存剩余,“id”cpu空闲率多少啊, 越多好好。

[root@CentOS7 ~]# vmstat 1 2 —每间隔1秒刷新一次,一共刷新2次

procs -----------memory---------- —swap-- -----io---- -system-- ------cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

1 0 5632 91292 32 789264 0 0 22 13 19 36 0 0 100 0 0

0 0 5632 91292 32 789264 0 0 0 0 28 39 0 0 100 0 0

[root@CentOS7 ~]# vmstat -f ----查看这个系统一共fork多少次了。

​ 59231 forks

[root@CentOS7 ~]# vmstat -s ----查看内存使用的详细信息

[root@CentOS7 ~]# vmstat -d 1 ----查看磁盘的读写信息,每一秒刷新一次。

disk- ------------reads------------ ------------writes----------- -----IO------

​ total merged sectors ms total merged sectors ms cur sec

sda 41893 1778 2464625 5493 9472 4062 1403530 7451 0 37

sr0 11 0 5 0 0 0 0 0 0 0

dm-0 40929 0 2404673 4940 10914 0 1366176 6630 0 36

dm-1 662 0 9048 130 1823 0 14584 2790 0 1

dm-2 145 0 3825 10 404 0 16336 110 0 1

Asda 41893 1778 2464625 5493 9472 4062 1403530 7451 0 37

25,第二十五个命令:mpstat 是实时系统监控工具

[root@CentOS7 ~]# mpstat ----查看系统cpu详细信息。

Linux 5.11.12-300.el7.aarch64 (CentOS7.9) 11/22/2021 aarch64 (2 CPU)

10:24:53 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle

10:24:53 AM all 0.15 0.04 0.12 0.01 0.00 0.01 0.00 0.00 0.00 99.68

mpstat 这个命令可以看到cpu数量,和系统版本和处理器版本,还有各项cpu的使用信息。

[root@CentOS7 ~]# mpstat -P ALL 5 2 —表示每5秒产生一个报告,总共产生2个

Linux 5.11.12-300.el7.aarch64 (CentOS7.9) 11/22/2021 aarch64 (2 CPU)

10:28:03 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle

10:28:08 AM all 0.10 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.90

10:28:08 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

10:28:08 AM 1 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.80

10:28:08 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle

10:28:13 AM all 0.50 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.50

10:28:13 AM 0 0.80 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.20

10:28:13 AM 1 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.80

Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle

Average: all 0.30 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.70

Average: 0 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.60

Average: 1 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.80

[root@CentOS7 ~]#上边这个命令详细的列举了 cpu的使用信息,我平常查看“%idle”这个值,空闲率。通过它就可以知道cpu繁不繁忙。

26,第二十六个命令:iostat 查看磁盘读写信息

也可以看cpu部分信息。

[root@CentOS7 ~]# iostat

avg-cpu: %user %nice %system %iowait %steal %idle

​ 0.15 0.04 0.12 0.01 0.00 99.69

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn

sda 1.74 41.52 23.67 1232564 702653

scd0 0.00 0.00 0.00 2 0

dm-0 1.75 40.51 23.04 1202496 684076

dm-1 0.08 0.16 0.25 4616 7292

dm-2 0.02 0.06 0.28 1912 8168

[root@localhost ~]# iostat -d /dev/sda ----显示指定磁盘信息

[root@CentOS7 ~]# iostat -d -x -k 1 1

Linux 5.11.12-300.el7.aarch64 (CentOS7.9) 11/22/2021 aarch64 (2 CPU)

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sda 0.06 0.14 1.40 0.32 41.13 23.46 75.09 0.00 0.26 0.13 0.80 0.74 0.13

scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.45 0.00 0.00 0.00 0.00 5.45 0.00

dm-0 0.00 0.00 1.37 0.37 40.13 22.84 72.50 0.00 0.23 0.12 0.61 0.70 0.12

dm-1 0.00 0.00 0.02 0.06 0.15 0.24 9.50 0.00 1.16 0.19 1.53 0.45 0.00

dm-2 0.00 0.00 0.00 0.01 0.06 0.27 36.72 0.00 0.22 0.07 0.27 2.08 0.00

---- -d 显示磁盘使用情况,-x 显示详细信息 主要看“%util”这个值越高说明磁盘越繁忙

27,第二十七个命令:sar 是性能分析工具

—查看进程队列长度和平均负载状态监控每1秒踩一次连续踩3次

[root@CentOS7 ~]# sar -q 1 3

Linux 5.11.12-300.el7.aarch64 (CentOS7.9) 11/22/2021 aarch64 (2 CPU)

10:48:14 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked

10:48:15 AM 0 465 0.00 0.02 0.00 0

10:48:16 AM 0 465 0.00 0.02 0.00 0

10:48:17 AM 0 465 0.00 0.02 0.00 0

Average: 0 465 0.00 0.02 0.00 0

[root@CentOS7 ~]#

—查看inode、文件和其他内核表监控:

[root@CentOS7 ~]# sar -v 1 3

Linux 5.11.12-300.el7.aarch64 (CentOS7.9) 11/22/2021 aarch64 (2 CPU)

10:51:47 AM dentunusd file-nr inode-nr pty-nr

10:51:48 AM 7603 8224 23030 2

10:51:49 AM 7603 8224 23030 2

10:51:50 AM 7603 8224 23030 2

Average: 7603 8224 23030 2

[root@CentOS7 ~]#

—查看I/O和传送速率监控:

[root@CentOS7 ~]# sar -b 1 3

Linux 5.11.12-300.el7.aarch64 (CentOS7.9) 11/22/2021 aarch64 (2 CPU)

10:54:39 AM tps rtps wtps bread/s bwrtn/s

10:54:40 AM 0.00 0.00 0.00 0.00 0.00

10:54:41 AM 0.99 0.00 0.99 0.00 31.68

10:54:42 AM 0.00 0.00 0.00 0.00 0.00

Average: 0.33 0.00 0.33 0.00 10.63

[root@CentOS7 ~]#

[root@CentOS7 ~]#sar 1 1 -e 16:00:00 > data.txt

//每隔1秒记录CPU的使用情况,直到16点,数据将保存到data.txt文件中。(-e 参数表示结束时间,注意时间格式:必须为hh:mm:ss格式)

[root@CentOS7 ~]#sar 1 1 -n DEV -e 16:00:00 > data.txt

//每隔1秒记录网络使用情况,直到16点,数据将保存到data.txt文件中。

**28,第二十八个命令:**pidstat 查看某个进程磁盘读写

pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况(安装yum install sysstat)

[root@CentOS7 ~]# pidstat -d 1 —查看每个进程的io读写。参数1是每一秒刷新一次

[root@CentOS7 ~]# pidstat -r —内存使用情况统计

[root@CentOS7 ~]# pidstat -u —cpu使用情况统计

[root@CentOS7 ~]# pidstat -w -p 398 ----显示指定进程(398)的上下文切换情况

Linux 5.11.12-300.el7.aarch64 (CentOS7.9) 11/22/2021 aarch64 (2 CPU)

11:13:23 AM UID PID cswch/s nvcswch/s Command

11:13:23 AM 0 398 0.00 0.00 scsi_tmf_1

[root@CentOS7 ~]#

29,第二十九个命令:strace 调试Linux用户空间跟踪器

[root@CentOS7 ~]# strace ls —追踪ls这个命令都开启和访问了哪些文件.

[root@CentOS7 ~]# strace -T -tt -e trace=all -p 267718 ----“267718”是进程pid,这个命令是查看某个进程追踪他的信息。

[root@CentOS7 ~]#strace -tt -T -f -e trace=file -o /data/log/strace.log -s 1024 ./nginx

[root@iZbp1fehdscdu2pfkdhbubZ sbin]# strace -tt -T -f -e trace=file -s 1024 ./nginx

20:54:52.511880 execve(“./nginx”, [“./nginx”], [/* 23 vars */]) = 0 <0.000386>

20:54:52.512662 access(“/etc/ld.so.preload”, R_OK) = -1 ENOENT (No such file or directory) <0.000328>

20:54:52.513092 open(“/usr/local/lib/tls/x86_64/libdl.so.2”, O_RDONLY|O_CLOEXEC) = -1

…此处省滤部分信息

20:54:52.540843 stat(“/etc/sysconfig/64bit_strstr_via_64bit_strstr_sse2_unaligned”, 0x7fff36007050) = -1 ENOENT (No such file or directory) <0.000041>

nginx: [emerg] module “/usr/lib64/nginx/modules/ngx_http_image_filter_module.so” version 1016001 instead of 1020001 in /usr/share/nginx/modules/mod-http-image-filter.conf:1

20:54:52.542443 +++ exited with 1 +++

—这个命令是追踪“nginx”这个服务启动命令在执行的时候的信息。

30,第三十个命令df **显示磁盘**空间信息

[root@iZbp1fehdscdu2pfkdhbubZ ~]# df -t ext4 —指定磁盘类型查看详细信息

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/vda1 20510332 7446392 11999032 39% /

[root@iZbp1fehdscdu2pfkdhbubZ ~]# df -h -t ext4 —以易读方式显示磁盘空间使用情况

Filesystem Size Used Avail Use% Mounted on

/dev/vda1 20G 7.2G 12G 39% /

[root@iZbp1fehdscdu2pfkdhbubZ ~]#df -h ---- 显示所有磁盘的使用信息

[root@iZbp1fehdscdu2pfkdhbubZ ~]# df -h /etc —显示这个/etc的目录使用信息

Filesystem Size Used Avail Use% Mounted on

/dev/vda1 20G 7.2G 12G 39% /

[root@iZbp1fehdscdu2pfkdhbubZ ~]# df -Th ------显示磁盘的文件类型和使用信息

Filesystem Type Size Used Avail Use% Mounted on

/dev/vda1 ext4 20G 7.2G 12G 39% /

devtmpfs devtmpfs 486M 0 486M 0% /dev

tmpfs tmpfs 496M 0 496M 0% /dev/shm

tmpfs tmpfs 496M 464K 495M 1% /run

tmpfs tmpfs 496M 0 496M 0% /sys/fs/cgroup

tmpfs tmpfs 100M 0 100M 0% /run/user/0

[root@iZbp1fehdscdu2pfkdhbubZ ~]# df -Tha ----查看特殊文件信息。

31,第三十一个命令:netstat 命令用于显示各种网络相关信息

[root@CentOS7 ~]# netstat -t -c 2 netstat 将每隔一秒输出网络信息

[root@CentOS7 ~]# netstat -anptu —查看目前服务器上监听的端口和没哪些进程占用。

[root@CentOS7 ~]# netstat -ie ----和ifconfig命令一样,去掉“e”可以看网卡信息。

[root@CentOS7 ~]# netstat -at ----列举所有TCP端口。

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN

tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN

tcp 0 192 CentOS7.9:ssh 10.211.55.2:49897 ESTABLISHED

tcp 0 0 CentOS7.9:ssh 10.211.55.2:51938 ESTABLISHED

tcp6 0 0 [::]:ssh [::]😗 LISTEN

tcp6 0 0 localhost:ipp [::]😗 LISTEN

tcp6 0 0 [::]:sunrpc [::]😗 LISTEN

tcp6 0 0 [::]:http [::]😗 LISTEN

[root@CentOS7 ~]#

[root@CentOS7 ~]# netstat -a | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

LISTEN 7

ESTABLISHED 2

[root@CentOS7 ~]# -----统计机器中网络连接各个状态个数

[root@CentOS7 ~]# netstat -nat |awk ‘{print $6}’|sort|uniq -c

1 established)

2 ESTABLISHED

1 Foreign

7 LISTEN

[root@CentOS7 ~]#把状态全都取出来后使用uniq -c统计后再进行排序

[root@CentOS7 ~]# netstat -nat | grep “127.0.0.1:80” |awk ‘{print $5}’|awk -F: ‘{print $4}’|sort|uniq -c|sort -nr|head -20

1

[root@CentOS7 ~]#—查看连接某服务端口最多的的IP地址,127.0.0.1:80换成目标地址和端口即可。

[root@CentOS7 ~]# netstat -na|grep ESTABLISHED|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c

1 100.100.30.26

1 115.233.196.14

[root@CentOS7 ~]# —查出哪个IP地址连接最多,将其封了

以下两个信息代表的意思。

ESTABLISHED:正常数据传输状态

LISTEN:服务器在等待进入呼叫

[root@CentOS7 ~~]# netstat -an|awk ‘{print $4}’|sort|uniq -c|sort -nr|head

62 ]

10 ACC

1 Type

1 sockets

1 (servers

1 Local

1 172.18.155.107:59791

1 172.18.155.107:37182

1 172.18.155.107:22

1 ::1:323

[root@CentOS7 ~~]#—查看同时连接到哪个服务器 IP 比较多,cc 攻击用。使用双网卡或多网卡可用。

[root@iZbp1fehdscdu2pfkdhbubZ ~]# netstat -an|awk -F: ‘{print $2}’|sort|uniq -c|sort -nr|head

77

1 80 0.0.0.0

1 68 0.0.0.0

1 45312 100.100.45.106

1 37182 100.100.30.26

1 323 0.0.0.0

1 22 115.233.196.14

1 22 0.0.0.0

[root@CentOS7 ~~]# —查看哪些 IP 连接到服务器连接多,可以查看连接异常 IP。

[root@CentOS7 ~ ~]# netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n

1 100.100.30.26

1 100.100.45.106

1 10.143.0.46

1 115.233.196.14

1 Address

1 servers)

[root@CentOS7 ~~]#—使用 netstat 命令计算每个主机连接到本机的连接数。

32,第三十二个命令:mount 这个是挂载命令

[root@CentOS7 ~]# mount /dev/cdrom /mnt —如果你的u盘和硬盘已经连接了服务器,可以用这个命令挂载。

[root@CentOS7 ~]# mount -o loop Centos7.9.iso /mnt —如果你的iso镜像已经上传到了服务器了,你可以将iso镜像挂载到mnt目录,使用这个命令。

[root@CentOS7 ~]# mount -t nfs 10.1.1.1:/wm /mnt —指定挂载类型,-t 后边还可以是ceph这个类型。

[root@CentOS7 ~]# cat /proc/mounts —查看内核追踪到的已挂载的所有设备

[root@CentOS7 ~]# mount -a --重新挂载下

附加**:**挂载文件fstab

[root@master ~]# cat /etc/fstab

#

# /etc/fstab

# Created by anaconda on Tue Jan 4 07:46:50 2022

#

# Accessible filesystems, by reference, are maintained under ‘/dev/disk/’.

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.

#

# After editing this file, run ‘systemctl daemon-reload’ to update systemd

# units generated from this file.

#

/dev/mapper/cl_fedora-root / xfs defaults 0 0

UUID=5b2e18d0-b832-45f0-aaff-071be45496c6 /boot xfs defaults 0 0

UUID=B650-384B /boot/efi vfat umask=0077,shortname=winnt 0 2

/dev/mapper/cl_fedora-home /home xfs defaults 0 0

/dev/sdb1 /mnt xfs defaults 0 0

[root@master ~]#

上边这个文件,编辑开机自动挂载信息。对照已有实例填写即可。

注:

/dev/sdb1:挂载设备

/mnt:需要挂载的目录

Xfs:设备的文件系统类型

Defaults:挂载选项

0: 不自检

1: 自检

33,第三十三个命令:lsblk****用于列出块设备的信息

[root@CentOS7 ~]# lsblk lsblk命令默认情况下将以树状列出所有块设备

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sr0 11:0 1 1024M 0 rom

sda 8:0 0 64G 0 disk

├─sda2 8:2 0 1G 0 part /boot

├─sda3 8:3 0 62.4G 0 part

│ ├─cl_fedora-swap 253:1 0 2G 0 lvm [SWAP]

│ ├─cl_fedora-home 253:2 0 19.8G 0 lvm /home

│ └─cl_fedora-root 253:0 0 40.6G 0 lvm /

└─sda1 8:1 0 600M 0 part /boot/efi

[root@CentOS7 ~]#

[root@CentOS7 ~]# lsblk -a 默认选项不会列出所有空设备

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sr0 11:0 1 1024M 0 rom

loop0 7:0 0 0 loop

sda 8:0 0 64G 0 disk

├─sda2 8:2 0 1G 0 part /boot

├─sda3 8:3 0 62.4G 0 part

│ ├─cl_fedora-swap 253:1 0 2G 0 lvm [SWAP]

│ ├─cl_fedora-home 253:2 0 19.8G 0 lvm /home

│ └─cl_fedora-root 253:0 0 40.6G 0 lvm /

└─sda1 8:1 0 600M 0 part /boot/efi

[root@CentOS7 ~]#

[root@CentOS7 ~]# lsblk -m /dev/sda —查看指定盘的信息。

NAME SIZE OWNER GROUP MODE

sda 64G root disk brw-rw----

├─sda2 1G root disk brw-rw----

├─sda3 62.4G root disk brw-rw----

│ ├─cl_fedora-swap 2G root disk brw-rw----

│ ├─cl_fedora-home 19.8G root disk brw-rw----

│ └─cl_fedora-root 40.6G root disk brw-rw----

└─sda1 600M root disk brw-rw----

[root@CentOS7 ~]#

34,第三十四个命令$RANDOM创建随机数命令

[root@CentOS7 ~]# echo $RANDOM

29281

[root@CentOS7 ~]#----这个命令一般在有大量的文件需要匹配名字,并不能重复时,可以使用。

[root@CentOS7 ~]# mkdir echo $RANDOM.log

[root@CentOS7 ~# mkdir echo $RANDOM.log

[root@CentOS7 ~]# mkdir echo $RANDOM.log

[root@CentOS7 ~]# mkdir echo $RANDOM.log

[root@CentOS7 ~]# ls

14976.log 24355.log 27677.log 4778.log

[root@CentOS7 ~]# —这个命令使用不多,大家了解就可以了。

35,第三十五命令:history 查看历史命令

[root@CentOS7 1223.log]# echo $HISTSIZE

1000

[root@CentOS7 1223.log]# ----查看最多记录多少条命令。

[root@CentOS7 1223.log]# history 10 ----查看最近10条命令。

[root@CentOS7 1223.log]# history -c ----清楚所有记录。

[root@CentOS7 1223.log]# history

1 history

[root@CentOS7 1223.log]#

36,第三十六个命令:tar 解压和压缩工具

[root@CentOS7 1223.log]# tar tvf wm1.tar —查看压缩包内容

drwxr-xr-x root/root 0 2021-11-22 14:34 14976.log/

drwxr-xr-x root/root 0 2021-11-22 14:34 24355.log/

drwxr-xr-x root/root 0 2021-11-22 14:34 27677.log/

drwxr-xr-x root/root 0 2021-11-22 14:34 4778.log/

-rw-r–r-- root/root 10240 2021-11-22 15:08 wm.tar

[root@CentOS7 1223.log]#

[root@CentOS7 1223.log]# ls

14976.log 24355.log 27677.log 4778.log

[root@CentOS7 1223.log]# tar cf wm.tar * —将这个目录的文件都打包成一个tar包。

[root@CentOS7 1223.log]# ls

14976.log 24355.log 27677.log 4778.log wm.tar

[root@CentOS7 1223.log]#

[root@CentOS7 1223.log]# tar zcf wm1.tar * —将这个目录的文件,压缩成一个tar包。

[root@CentOS7 1223.log]# ll

total 16

drwxr-xr-x. 2 root root 6 Nov 22 14:34 14976.log

drwxr-xr-x. 2 root root 6 Nov 22 14:34 24355.log

drwxr-xr-x. 2 root root 6 Nov 22 14:34 27677.log

drwxr-xr-x. 2 root root 6 Nov 22 14:34 4778.log

-rw-r–r–. 1 root root 221 Nov 22 15:10 wm1.tar

-rw-r–r–. 1 root root 10240 Nov 22 15:08 wm.tar

[root@CentOS7 1223.log]#

[root@CentOS7 1223.log]# tar xf wm.tar —解压tar包

[root@CentOS7 1223.log]# tar xzf wm1.tar —解压tar包,不通压缩方式, 解压不通。

37,第三十七个命令:zip 压缩命令

[root@CentOS7 1223.log]# ls

14976.log 24355.log 27677.log 4778.log abcd r wm1.tar wm.tar

[root@CentOS7 1223.log]# zip -r wm.zip *

[root@CentOS7 1223.log]# ls

14976.log 24355.log 27677.log 4778.log abcd r wm1.tar wm.tar wm.zip

[root@CentOS7 1223.log]#

[root@CentOS7 1223.log]# unzip wm.zip ----解压命令

38,第三十八个命令:find 查找和搜索文件

[root@CentOS7 ~]# find . -name ‘[A-Z]*.txt’ -print

./A.txt

[root@CentOS7 ~]#—在当前目录及子目录中,查找大写字母开头的txt文件

/etc/selinux/targeted/active/modules/100/hostname

/etc/hosts

/etc/hosts.allow

/etc/hosts.deny

/etc/avahi/hosts

/etc/hostname

[root@CentOS7 ~]#—在/etc及其子目录中,查找host开头的文件

[root@CentOS7 ~]# find . -path “./aa” -prune -o -name “*.txt” -print

./data.txt

./straceout.txt

./output.txt

./configure-strace.txt

./A.txt

[root@CentOS7 ~]#—在当前目录除aa之外的子目录内搜索 txt文件

[root@CentOS7 ~]# find . -mtime -2 -type f -print

—查找2天内被更改过的文件

[root@CentOS7 ~]# find . -mtime +2 -type f -print

—查找2天前被更改过的文件

[root@CentOS7 ~]# find . -atime -1 -type f -print

—查找一天内被访问的文件

[root@CentOS7 ~]# find . -cmin +10 -type f -print

—查找10分钟以前状态被改变的文件

[root@CentOS7 ~]# find / -size +1M -type f -print

查找超过1M的文件

[root@CentOS7 ~]# find / -type f -size +20M 2>/dev/null|xargs du -shm|sort -nr

123M /var/cache/yum/aarch64/7/updates/packages/linux-firmware-20201218-102.git05789708.el7.noarch.rpm

103M /usr/lib64/firefox/libxul.so

102M /usr/lib/locale/locale-archive

101M /var/cache/yum/aarch64/7/updates/packages/firefox-91.3.0-1.el7.centos.aarch64.rpm

71M /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.aarch64/jre/lib/rt.jar

[root@CentOS7 ~]# —查找“/”下大于20M的文件,并排序和显示大小。

find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件

find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件

39,第三十九个命令:rpm 包管理工具命令

[root@CentOS7 ~]# rpm -qa —查看已经在系统上安装的rpm包。

[root@CentOS7 ~]# rpm -qa | grep httpd

httpd-tools-2.4.6-97.el7.centos.2.aarch64

httpd-2.4.6-97.el7.centos.2.aarch64

[root@CentOS7 ~]# —查看是否在系统上已经安装了httpd包

[root@CentOS7 ~]# rpm -ivh nginx-1.18.0-1.el7.ngx.x86_64.rpm --安装rpm包

[root@CentOS7 ~]# rpm -Uvh nginx-1.18.0-1.el7.ngx.x86_64.rpm —升级rpm包

[root@CentOS7 ~]# rpm -e --nodeps nginx-1.18.0-1.el7.ngx.x86_64.rpm —卸载nginx包,但是依赖包不卸载跳过。

[root@CentOS7 ~]# rpm -qa | grep httpd

httpd-tools-2.4.6-97.el7.centos.2.aarch64

httpd-2.4.6-97.el7.centos.2.aarch64

[root@CentOS7 ~]# rpm -ql httpd-tools-2.4.6-97.el7.centos.2.aarch64

/usr/bin/ab

/usr/bin/htdbm

/usr/bin/htdigest

/usr/bin/htpasswd

/usr/bin/httxt2dbm

/usr/bin/logresolve

/usr/share/doc/httpd-tools-2.4.6

/usr/share/doc/httpd-tools-2.4.6/LICENSE

/usr/share/doc/httpd-tools-2.4.6/NOTICE

/usr/share/man/man1/ab.1.gz

/usr/share/man/man1/htdbm.1.gz

/usr/share/man/man1/htdigest.1.gz

/usr/share/man/man1/htpasswd.1.gz

/usr/share/man/man1/httxt2dbm.1.gz

/usr/share/man/man1/logresolve.1.gz

[root@CentOS7 ~]# —查看httpd这个包的安装位置。

40,第四十个命令:grep****是一个强大的文本搜索工具

[root@CentOS7 ~]# grep -n root /etc/passwd

1:root❌0:0:root:/root:/bin/bash

10:operator❌11:0:operator:/root:/sbin/nologin

[root@CentOS7 ~]# —将/etc/passwd,有出现 root 的行取出来,同时显示这些行在/etc/passwd的行号

[root@CentOS7 ~]# grep -v root /etc/passwd —取反,将不含有root的信息打印出来。

[root@CentOS7 ~]# dmesg | grep -n -A3 -B2 --color=auto ‘eth’

27-[ 0.000000] Using crashkernel=auto, the size chosen is a best effort estimation.

28-[ 0.000000] crashkernel reserved: 0x0000000076000000 - 0x0000000096000000 (512 MB)

29:[ 0.000000] psci: probing for conduit method from DT.

30-[ 0.000000] psci: PSCIv1.0 detected in firmware.

31-[ 0.000000] psci: Using standard PSCI v0.2 function IDs

32-[ 0.000000] psci: Trusted OS migration not required

[root@CentOS7 ~]# --用 dmesg 列出核心信息,再以 grep 找出内含 eth 那行,在关键字所在行的前两行与后三行也一起捉出来显示

[root@CentOS7 ~]# grep -n ‘^$’ /var/log/Xorg.0.log

65:

[root@CentOS7 ~]#—查看文件的空白行有没有。

如果我想要字串开头与结尾都是 g,但是两个 g 之间仅能存在至少一个 o ,亦即是 gog, goog, gooog… 等等,那该如何?

[root@CentOS7 ~]# grep -n ‘goo*g’ test.txt

如果我想要找出 g 开头与 g 结尾的行,当中的字符可有可无

[root@CentOS7 ~]# grep -n ‘g.*g’ test.txt

如果我想要找出『任意数字』的行?因为仅有数字,所以就成为:

[root@CentOS7 ~]# grep -n ‘[0-9][0-9]*’ test.txt

**41,第四十一个命令:**ss –Linux网络状态工具

本人经常使用这个命令查看系统正在监听的端口信息命令如下:

[root@CentOS7 ~]# ss -ntl ----查看开启的端口信息

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 128 *:22 :

LISTEN 0 128 127.0.0.1:631 :

LISTEN 0 128 *:111 :

LISTEN 0 128 [::]:22 [::]😗

LISTEN 0 128 [::1]:631 [::]😗

LISTEN 0 128 [::]:111 [::]😗

LISTEN 0 511 [::]:80 [::]😗

[root@CentOS7 ~]#

[root@CentOS7 ~]# ss -ltm —选项可用于显示每个套接字使用的内存量

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 128 *:ssh :

​ skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d0)

LISTEN 0 128 127.0.0.1:ipp :

​ skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d0)

LISTEN 0 128 *:sunrpc :

​ skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d0)

LISTEN 0 128 [::]:ssh [::]😗

​ skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d0)

LISTEN 0 128 [::1]:ipp [::]😗

​ skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d0)

LISTEN 0 128 [::]:sunrpc [::]😗

​ skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d0)

LISTEN 0 511 [::]:http [::]😗

​ skmem:(r0,rb131072,t0,tb16384,f0,w0,o0,bl0,d1003)

[root@CentOS7 ~]#

[root@CentOS7 ~]# ss -s —我们可以使用-s选项快速查看统计数据

Total: 806 (kernel 1015)

TCP: 12 (estab 4, closed 1, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total IP IPv6

* 1015 - -

RAW 1 0 1

UDP 9 6 3

TCP 11 7 4

INET 21 13 8

FRAG 0 0 0

[root@CentOS7 ~]#

**42,第四十二个命令:**du 目录的磁盘使用空间

[root@CentOS7 /]# du -sh ----统计“/”这个目录的大小

du: cannot access ‘./proc/3696/task/3696/fd/4’: No such file or directory

4.4G .

[root@CentOS7 /]#

[root@CentOS7 /]# du -sh * ----统计“/”这个目录里面的所有目录的大小

0 bin

147M boot

3.6G usr

575M var

[root@CentOS7 /]#

[root@CentOS7 usr]# du -h --max-depth=1 /usr/ 这个命令是定义了目录的层级数来查看信息。超过指定层数的目录后,予以忽略。

177M /usr/bin

70M /usr/sbin

849M /usr/lib

1.2G /usr/lib64

1.4G /usr/share

3.6G /usr/

[root@CentOS7 usr]#

43,第四十三个命令 ps 查看进程主要信息

[root@CentOS7 usr]# ps -ef —这个命令使用较多,直接查看启动的进程信息。

UID PID PPID C STIME TTY TIME CMD

root 1 0 0 02:17 ? 00:00:09 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

root 2 0 0 02:17 ? 00:00:00 [kthreadd]

root 3 2 0 02:17 ? 00:00:00 [rcu_gp]

。。。省滤部分信息

[root@CentOS7 usr]#

[root@CentOS7 usr]# ps -aux —这个命令是看所有的在内存中运行的进程。

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.4 158432 7400 ? Ss 02:17 0:10 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

root 2 0.0 0.0 0 0 ? S 02:17 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? I< 02:17 0:00 [rcu_gp]

[root@CentOS7 usr]#

[root@CentOS7 usr]# ps -u root —指定用户,查看相关进程信息

PID TTY TIME CMD

1 ? 00:00:10 systemd

2 ? 00:00:00 kthreadd

3 ? 00:00:00 rcu_gp

4 ? 00:00:00 rcu_par_gp

[root@CentOS7 usr]#

[root@CentOS7 usr]# ps -o pid,ppid,pgrp,session,tpgid,comm —指定字段显示信息

PID PPID PGRP SESS TPGID COMMAND

3091 3086 3091 3091 5025 bash

5025 3091 5025 3091 5025 ps

[root@CentOS7 usr]#

[root@CentOS7 usr]# ps aux | sort -k4,4nr | head -n 10 —查看占用内存的前十进程。

wm 6597 0.1 13.6 2958284 204032 ? Sl 02:18 0:59 /usr/bin/gnome-shell

wm 6922 0.0 4.2 1031528 63592 ? Sl 02:18 0:04 /usr/bin/gnome-software --gapplication-service

root 6074 0.0 3.7 214256 55924 tty1 Ssl+ 02:18 0:01 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-s9sJhV/database -seat seat0 -nolisten tcp vt1

wm 6873 0.0 2.5 710820 37656 ? Sl 02:18 0:00 nautilus-desktop --force

wm 7183 0.0 2.5 478780 37808 ? Sl 02:18 0:00 /usr/libexec/gnome-terminal-server

wm 6679 0.0 2.4 642452 35864 ? Sl 02:18 0:00 /usr/libexec/goa-daemon

root 883 0.0 2.1 223316 31456 ? Ssl 02:17 0:00 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

wm 6937 0.0 1.9 995044 28684 ? Sl 02:18 0:00 /usr/libexec/evolution-addressbook-factory-subprocess --factory all --bus-name org.gnome.evolution.dataserver.Subprocess.Backend.AddressBookx6905x2 --own-path /org/gnome/evolution/dataserver/Subprocess/Backend/AddressBook/6905/2

wm 6660 0.0 1.7 710280 26472 ? Sl 02:18 0:00 /usr/libexec/evolution-source-registry

wm 6757 0.0 1.7 516096 25412 ? Sl 02:18 0:00 /usr/libexec/gsd-power

[root@CentOS7 usr]#

[root@CentOS7 usr]# ps -e -o ‘pid,comm,args,pcpu,rsz,vsz,stime,user,uid’ | sort -k5nr 查看内存占用的另一种方式。

[root@CentOS7 ~]# ps aux --forest —以进程树方式显示信息。

**44,第四十四个命令:**lsof 列出当前系统打开文件的工具

[root@CentOS7 usr]# lsof -i :22 —显示占用22端口的进程。

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sshd 1246 root 3u IPv4 24603 0t0 TCP *:ssh (LISTEN)

sshd 1246 root 4u IPv6 24605 0t0 TCP *:ssh (LISTEN)

[root@CentOS7 usr]#

[root@CentOS7 usr]# lsof which httpd —显示哪个进程在使用httpd的执行文件

lsof: WARNING: can’t stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs

Output information may be incomplete.

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

httpd 22707 root txt REG 253,0 539976 2032962 /usr/sbin/httpd

httpd 22712 apache txt REG 253,0 539976 2032962 /usr/sbin/httpd

httpd 22713 apache txt REG 253,0 539976 2032962 /usr/sbin/httpd

httpd 22714 apache txt REG 253,0 539976 2032962 /usr/sbin/httpd

httpd 22715 apache txt REG 253,0 539976 2032962 /usr/sbin/httpd

httpd 22716 apache txt REG 253,0 539976 2032962 /usr/sbin/httpd

[root@CentOS7 usr]#

[root@CentOS7 usr]# lsof /usr/sbin/sshd — 查看哪个进程在占用sshd这个文件

lsof: WARNING: can’t stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs

Output information may be incomplete.

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sshd 1246 root txt REG 253,0 873224 2817468 /usr/sbin/sshd

sshd 3029 root txt REG 253,0 873224 2817468 /usr/sbin/sshd

sshd 3086 root txt REG 253,0 873224 2817468 /usr/sbin/sshd

sshd 7399 root txt REG 253,0 873224 2817468 /usr/sbin/sshd

sshd 29419 root txt REG 253,0 873224 2817468 /usr/sbin/sshd

[root@CentOS7 usr]#

[root@CentOS7 ~]# lsof -i —显示所有打开的端口。

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 814 rpc 6u IPv4 19328 0t0 UDP *:sunrpc

rpcbind 814 rpc 7u IPv4 19616 0t0 UDP *:984

rpcbind 814 rpc 8u IPv4 19617 0t0 TCP *:sunrpc (LISTEN)

rpcbind 814 rpc 9u IPv6 19618 0t0 UDP *:sunrpc

cupsd 1243 root 11u IPv4 24717 0t0 TCP localhost:ipp (LISTEN)

sshd 1246 root 3u IPv4 24603 0t0 TCP *:ssh (LISTEN)

sshd 1246 root 4u IPv6 24605 0t0 TCP *:ssh (LISTEN)

dhclient 1884 root 6u IPv4 470718 0t0 UDP *:bootpc

[root@CentOS7 ~]#

[root@CentOS7 ~]# lsof -a -u root -d txt —root用户进程打开的文件类型为txt的文件

lsof: WARNING: can’t stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs

Output information may be incomplete.

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

systemd 1 root txt REG 253,0 1669656 997159 /usr/lib/systemd/systemd

kthreadd 2 root txt unknown /proc/2/exe

rcu_gp 3 root txt unknown /proc/3/exe

rcu_par_g 4 root txt unknown /proc/4/exe

kworker/0 6 root txt unknown /proc/6/exe

mm_percpu 8 root txt unknown /proc/8/exe

[root@CentOS7 ~]#

[root@CentOS7 ~]# lsof | grep /var/log/messages —查看都有哪些进程在访问messages目录。

lsof: WARNING: can’t stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs

Output information may be incomplete.

abrt-watc 820 root 4r REG 253,0 639929 34452610 /var/log/messages

rsyslogd 1249 root 6w REG 253,0 639929 34452610 /var/log/messages

in:imjour 1249 1261 root 6w REG 253,0 639929 34452610 /var/log/messages

rs:main 1249 1263 root 6w REG 253,0 639929 34452610 /var/log/messages

[root@CentOS7 ~]#

[root@CentOS7 ~]# lsof -i tcp —列举所有tcp信息

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 814 rpc 8u IPv4 19617 0t0 TCP *:sunrpc (LISTEN)

rpcbind 814 rpc 11u IPv6 19620 0t0 TCP *:sunrpc (LISTEN)

sshd 1246 root 4u IPv6 24605 0t0 TCP *:ssh (LISTEN)

sshd 3029 root 3u IPv4 473418 0t0 TCP CentOS7.9:ssh->10.211.55.2:56774 (ESTABLISHED)

sshd 3086 root 3u IPv4 473058 0t0 TCP CentOS7.9:ssh->10.211.55.2:56784 (ESTABLISHED)

sshd 7399 root 3u IPv4 41966 0t0 TCP CentOS7.9:ssh->10.211.55.2:51938 (ESTABLISHED)

httpd 22707 root 4u IPv6 96519 0t0 TCP *:http (LISTEN)

httpd 22716 apache 4u IPv6 96519 0t0 TCP *:http (LISTEN)

sshd 29419 root 3u IPv4 167243 0t0 TCP CentOS7.9:ssh->10.211.55.2:49897 (ESTABLISHED)

[root@CentOS7 ~]#

[root@CentOS7 ~]# lsof -u wm —列举某个用户的所有信息。

**45,第四十五个命令:**sed 替换文本信息工具

[root@CentOS7 ~]# cat /var/log/yum.log

Nov 22 03:56:22 Installed: apr-1.4.8-7.el7.aarch64

Nov 22 03:56:22 Installed: apr-util-1.5.2-6.el7.aarch64

Nov 22 03:56:22 Installed: httpd-tools-2.4.6-97.el7.centos.2.aarch64

Nov 22 04:00:12 Installed: mailcap-2.1.41-2.el7.noarch

Nov 22 04:00:13 Installed: httpd-2.4.6-97.el7.centos.2.aarch64

[root@CentOS7 ~]# sed ‘s/Nov/wm/g’ /var/log/yum.log —只是替换,但是不生效。

wm 22 03:56:22 Installed: apr-1.4.8-7.el7.aarch64

wm 22 03:56:22 Installed: apr-util-1.5.2-6.el7.aarch64

wm 22 03:56:22 Installed: httpd-tools-2.4.6-97.el7.centos.2.aarch64

wm 22 04:00:12 Installed: mailcap-2.1.41-2.el7.noarch

wm 22 04:00:13 Installed: httpd-2.4.6-97.el7.centos.2.aarch64

[root@CentOS7 ~]# sed -i ‘s/Nov/wm/g’ /var/log/yum.log —添加-i参数直接生效。

[root@CentOS7 ~]# cat /var/log/yum.log

wm 22 03:56:22 Installed: apr-1.4.8-7.el7.aarch64

wm 22 03:56:22 Installed: apr-util-1.5.2-6.el7.aarch64

wm 22 03:56:22 Installed: httpd-tools-2.4.6-97.el7.centos.2.aarch64

wm 22 04:00:12 Installed: mailcap-2.1.41-2.el7.noarch

wm 22 04:00:13 Installed: httpd-2.4.6-97.el7.centos.2.aarch64

[root@CentOS7 ~]#

[root@CentOS7 ~]# sed ‘/^$/d’ /var/log/messages —删除空白行

[root@CentOS7 ~]# sed '/^wm/'d /var/log/yum.log —删除以wm开头的行。

test 22 04:00:13 Installed: httpd-2.4.6-97.el7.centos.2.aarch64

test 22 04:00:13 Installed: httpd-2.4.6-97.el7.centos.2.aarch64

[root@CentOS7 ~]# cat /var/log/yum.log

wm 22 03:56:22 Installed: apr-1.4.8-7.el7.aarch64

wm 22 03:56:22 Installed: apr-util-1.5.2-6.el7.aarch64

wm 22 03:56:22 Installed: httpd-tools-2.4.6-97.el7.centos.2.aarch64

wm 22 04:00:12 Installed: mailcap-2.1.41-2.el7.noarch

wm 22 04:00:13 Installed: httpd-2.4.6-97.el7.centos.2.aarch64

wm 22 04:00:13 Installed: httpd-2.4.6-97.el7.centos.2.aarch64

test 22 04:00:13 Installed: httpd-2.4.6-97.el7.centos.2.aarch64

test 22 04:00:13 Installed: httpd-2.4.6-97.el7.centos.2.aarch64

[root@CentOS7 ~]#

46,第四十六个命令awk **是linux下的一个文件**编辑器

[root@CentOS7 ~]# cat /etc/passwd |awk -F ‘:’ ‘{print $1}’ --打印以“:”为分隔符的第一列。

root

bin

daemon

。。。此处省滤部分信息

tcpdump

wm

apache

[root@CentOS7 ~]#

[root@CentOS7 usr]# ls -l |awk ‘BEGIN {size=0;print "[start]size is ", size} {if($5!=4096){size=size+$5;}} END{print "[end]size is ", size/1024/1024,“M”}’ —统计某个文件夹下的文件占用的字节数,过滤4096大小的文件(一般都是文件夹)

[start]size is 0

[end]size is 0.164241 M

[root@CentOS7 usr]# ----坦然的说,这个命令很强大,但是我在工作中用到的不多,可能是我不擅长写这么复杂的命令。喜欢简单点的,主要是脑子笨。

**47,第四十七个命令:**export 设置或显示环境变量

[root@CentOS7 usr]# export —查看变量的信息

declare -x HISTCONTROL=“ignoredups”

declare -x HISTSIZE=“1000”

declare -x HOME=“/root”

declare -x HOSTNAME=“CentOS7.9”

declare -x USER=“root”

declare -x XDG_DATA_DIRS=“/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share”

declare -x XDG_RUNTIME_DIR=“/run/user/0”

declare -x XDG_SESSION_ID=“110”

[root@CentOS7 usr]#

[root@CentOS7 usr]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@CentOS7 usr]# export PATH=$PATH:/home/roc/operation_tools —添加自制的某些工具路径,实现可以在系统中执行某个自制工具的命令。

[root@CentOS7 usr]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/roc/operation_tools

[root@CentOS7 usr]#

**48,第四十八个命令:**echo 输出信息命令

[root@CentOS7 usr]# echo 123456|passwd --stdin root ----一般这个命令添加到脚本里,实现自动修改root密码。

Changing password for user root.

passwd: all authentication tokens updated successfully.

[root@CentOS7 usr]#

[root@CentOS7 usr]# echo “hello world” > 1.txt —输出文本信息。

[root@CentOS7 usr]# cat 1.txt

hello world

[root@CentOS7 usr]#

**49,第四十九个命令:**tcpdump **—**抓包工具

[root@CentOS7 usr]# tcpdump -i eth0 —指定网卡实时抓取包信息。

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

21:32:38.548349 IP CentOS7.9.ssh > 10.211.55.2.56784: Flags [P.], seq 1207817357:1207817565, ack 1158281800, win 546, options [nop,nop,TS val 1702999635 ecr 3046735300], length 208

21:32:38.549196 IP 10.211.55.2.56784 > CentOS7.9.ssh: Flags [.], ack 208, win 2044, options [nop,nop,TS val 3046735503 ecr 1702999635], length 0

21:32:38.552402 IP CentOS7.9.50013 > gateway.domain: 21674+ PTR? 73.55.211.10.in-addr.arpa. (43)

3 packets captured

22 packets received by filter

0 packets dropped by kernel

[root@CentOS7 usr]#

[root@CentOS7 usr]# tcpdump port 22 —查看某个端口的数据包信息。

**50,第五十个命令:scp —**文件传输命令

[root@CentOS7 usr]# scp 1.txt root@8.136.181.134:/home —传输文件到某个服务器上。

Warning: Permanently added ‘8.136.181.134’ (ECDSA) to the list of known hosts.

root@8.136.181.134’s password:

1.txt 100% 12 1.0KB/s 00:00

[root@CentOS7 usr]#

[root@CentOS7 usr]# scp root@8.136.181.134:/home/1.txt /home/ —将某个服务器的文件下载到本地。

root@8.136.181.134’s password:

1.txt 100% 12 1.0KB/s 00:00

[root@CentOS7 usr]# cd /home/

[root@CentOS7 home]# ls

1.txt wm

[root@CentOS7 home]# ----如果是目录要加“-r”参数。

51,第五十一个命令:firewalld 防火墙

以下命令为重启防火墙

[root@localhost ~]# systemctl restart firewalld

查看所有的防火墙策略(即显示/etc/firewalld/zones/下的所有策略)

[root@localhost ~]# firewall-cmd --list-all-zones

添加单个端口

[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=81/tcp

success

[root@localhost ~]#

添加多个端口

[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=8080-8085/tcp

success

[root@localhost ~]#

删除某个端口

[root@localhost ~]# firewall-cmd --permanent --zone=public --remove-port=81/tcp

success

[root@localhost ~]#

下边命令个是重新加载防火墙

[root@localhost ~]# firewall-cmd --reload

success

[root@localhost ~]#

验证:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

针对某个IP开放3000端

[root@localhost ~]# firewall-cmd --add-rich-rule=“rule family=“ipv4” source address=“10.211.55.74” port protocol=“tcp” port=“3000” accept” --permanent

success

[root@localhost ~]#

**52,第五十二个命令:**iptables 防火墙

用防火墙关闭制定端口以下命令

针对3306端口拒绝配置

[root@localhost ~]#iptables -A INPUT --dport 3306 -j DROP

[root@localhost ~]#iptables -A OUTPUT --dport 3306 -j DROP

追加一条针对IP地址进行放行

[root@localhost ~]# iptables -A INPUT -s 10.211.55.74/24 -j ACCEPT

删除一条记录

[root@localhost ~]# iptables -D INPUT 7 #删除第7条记录

拒绝所有访问

[root@localhost ~]# iptables -A INPUT -j DROP #这个一般放到最后,不然会对前面的规则造成影响。

限制单个IP一分钟内建立的连接数

[root@localhost ~]# iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 25 -j REJECT

53,第五十个命令:route 命令用于显示和操作IP路由表

安装:yum -y install net-tools

[root@localhost ~]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

0.0.0.0 10.211.55.1 0.0.0.0 UG 100 0 0 eth0

10.211.55.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0

[root@localhost ~]#

添加网关/设置网关

[root@localhost ~]# route add -net 225.0.0.0 netmask 241.0.0.0 dev eth0

[root@localhost ~]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

0.0.0.0 10.211.55.1 0.0.0.0 UG 100 0 0 eth0

10.211.55.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0

225.0.0.0 0.0.0.0 241.0.0.0 U 0 0 0 eth0

[root@localhost ~]#

屏蔽一条路由

[root@localhost ~]# route add -net 225.0.0.0 netmask 241.0.0.0 reject

[root@localhost ~]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

0.0.0.0 10.211.55.1 0.0.0.0 UG 100 0 0 eth0

10.211.55.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0

225.0.0.0 - 241.0.0.0 ! 0 - 0 -

225.0.0.0 0.0.0.0 241.0.0.0 U 0 0 0 eth0

[root@localhost ~]#

删除路由记录

[root@localhost ~]# route del -net 225.0.0.0 netmask 241.0.0.0

[root@localhost ~]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

0.0.0.0 10.211.55.1 0.0.0.0 UG 100 0 0 eth0

10.211.55.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0

225.0.0.0 - 241.0.0.0 ! 0 - 0 -

[root@localhost ~]# route del -net 225.0.0.0 netmask 241.0.0.0 reject

[root@localhost ~]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

0.0.0.0 10.211.55.1 0.0.0.0 UG 100 0 0 eth0

10.211.55.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0

[root@localhost ~]#

54,第五十个命令: lsattr命令用于显示文件属性

[root@localhost ~]# lsattr /etc/passwd

---------------- /etc/passwd

[root@localhost ~]#

**55,第五十个命令:**chattr命令防止文件被修改

[root@localhost ~]# chattr +i /etc/passwd

[root@localhost ~]# lsattr /etc/passwd

----i----------- /etc/passwd

[root@localhost ~]#

取消,可以用户修改:

[root@localhost ~]# chattr -i /etc/passwd

[root@localhost ~]# lsattr /etc/passwd

---------------- /etc/passwd

[root@localhost ~]#

[root@localhost ~]# chattr +a abc 只允许以追加方式读写文件

[root@localhost ~]# chattr +S abc

一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘

56,第五十个命令:chmod **更改文件**属性值

[root@localhost ~]# cat /etc/profile|grep umask

# By default, we want umask to get set. This sets it for login shell

umask 002

umask 022

[root@localhost ~]#

以上命令是查看系统的默认掩码

[root@localhost ~]# ll anaconda-ks.cfg

-rwxrwxrwx. 1 root root 1095 Nov 30 00:51 anaconda-ks.cfg

[root@localhost ~]#

● 7:表示rwx,拥有读、写和执行的权限

● 6:表示rw-,拥有读和写的权限

● 5:表示rx,拥有读取和执行的权限

● 4:表示r–,拥有只读权限

● 3:表示-wx,拥有写入和执行的权限

● 2:表示-w-,拥有只写权限

● 1:表示 - x,仅拥有执行权限

● 0:表示—,无权限

[root@localhost ~]# chmod 1777 anaconda-ks.cfg

[root@localhost ~]# ll anaconda-ks.cfg

-rwxrwxrwt. 1 root root 1095 Nov 30 00:51 anaconda-ks.cfg

[root@localhost ~]#

上边命令,是在数字序列前加1,目录所有者或超级用户可以删除该文件。

[root@localhost ~]# chmod -R 777 /

上边命令是递归/目录下的所有文件权限为777,如果改成000。那将任何人都无法使用。所以请谨慎使用。

**57,第五十个命令:**chowm 改变用户的所属组和所属主

[root@localhost ~]# chown wm:wm anaconda-ks.cfg

[root@localhost ~]# ll anaconda-ks.cfg

-rwxrwxrwt. 1 wm wm 1095 Nov 30 00:51 anaconda-ks.cfg

[root@localhost ~]#

58,第五十个命令:rmdir 删除空目录**,**有数据目录无法删除

[root@localhost ~]# mkdir -p /a/b/c

[root@localhost ~]# rmdir /a/b/

rmdir: failed to remove ‘/a/b/’: Directory not empty

[root@localhost ~]# rmdir /a/b/c

[root@localhost ~]# rmdir /a/b/

以上命令是直接删除b目录不行,需要先删除c目录才可以。

[root@localhost ~]# mkdir -p /a/b/c

[root@localhost ~]# rmdir /a/b/

rmdir: failed to remove ‘/a/b/’: Directory not empty

[root@localhost ~]# rmdir /a/

rmdir: failed to remove ‘/a/’: Directory not empty

[root@localhost ~]# rmdir /a/b/c

[root@localhost ~]#

59,第五十个命令:split 这个命令是分割文件

[root@localhost ~]# dd if=/dev/zero bs=1G count=1 of=date.file

1+0 records in

1+0 records out

1073741824 bytes (1.1 GB) copied, 1.8359 s, 585 MB/s

以上命令是创建一个1G大小的文件

[root@localhost ~]# split -b 10M date.file date.file --verbose

creating file ‘date.fileaa’

creating file ‘date.fileab’

creating file ‘date.fileac’

creating file ‘date.filead’

creating file ‘date.fileae’

此处省滤部分信息。。。

creating file ‘date.filedt’

creating file ‘date.filedu’

creating file ‘date.filedv’

creating file ‘date.filedw’

creating file ‘date.filedx’

creating file ‘date.filedy’

[root@localhost ~]#

以上命令是将date.file这个文件分割成10M一个文件。

[root@localhost ~]# cat date.file* > date.file

以上将所有的分割文件合并为一个文件。

**60,第六十个命令:**tail 查看文件命令

[root@localhost ~]# tail -n 3 /etc/passwd

postfix❌89:89::/var/spool/postfix:/sbin/nologin

chrony❌998:996::/var/lib/chrony:/sbin/nologin

wm❌1000:1000:wm:/home/wm:/bin/bash

[root@localhost ~]#

以上命令是查看文件末尾3行信息

[root@localhost ~]# tail -n 3 -f /etc/passwd

postfix❌89:89::/var/spool/postfix:/sbin/nologin

chrony❌998:996::/var/lib/chrony:/sbin/nologin

wm❌1000:1000:wm:/home/wm:/bin/bash

以上命令是查看文件末尾3行信息,并实时查看。

**61,第六十一个命令:**exec

[root@localhost ~]# find . -type f -exec ls -l {} ;

-rw-r–r–. 1 root root 18 Dec 28 2013 ./.bash_logout

-rw-r–r–. 1 root root 176 Dec 28 2013 ./.bash_profile

-rw-r–r–. 1 root root 176 Dec 28 2013 ./.bashrc

-rw-r–r–. 1 root root 100 Dec 28 2013 ./.cshrc

-rw-r–r–. 1 root root 129 Dec 28 2013 ./.tcshrc

以上命令查看当前目录的文件有哪些,并输出详细信息。此条命令中的ls -l可以替换其他你需要的命令,不再展示。

[root@localhost ~]# find . -type f -mtime +15 -exec rm {} ; (慎用)

**在当前目录中查找更改时间在15日以前的文件,**并删除它们

62,第五十二个命令:xargs

[root@CentOS7 .ssh]# find . -type f -print | xargs grep 10.211.55.75

./known_hosts:10.211.55.75 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHenlx5pk5bH66RiFeQJtF6cDToU9/kqtHqqnNdbK0lMpsb291AxvrKLEqZT5gbdLu0Kpl3nbiDbpftvvCIGo4w=

[root@CentOS7 .ssh]#

[root@CentOS7 .ssh]# find /etc/ -maxdepth 1 -user root -type f | xargs file

/etc/fstab: ASCII text

/etc/crypttab: empty

/etc/shells: ASCII text

/etc/sos.conf: ASCII text

/etc/libuser.conf: ASCII text

/etc/environment: empty

/etc/exports: empty

/etc/mke2fs.conf: ASCII text

/etc/filesystems: ASCII text

/etc/virc: ASCII text, with escape sequences

/etc/group: ASCII text

/etc/e2fsck.conf: ASCII text

[root@CentOS7 .ssh]#

以上命令是查看/etc/这个目录下root用户的文件,它的类型。

[root@CentOS7 .ssh]# find /etc -name *.txt | xargs -i cp {} /home/

[root@CentOS7 .ssh]# cd /home/

[root@CentOS7 home]# ls

brl-ba-all.txt brl-bl-40_m20_m40.txt brl-eu-all.txt brl-mb-all.txt brl-tn-all.txt brl-ts-pb40.txt brl-vd-all.txt brl-xw-all.txt

brl-bd-all.txt brl-ec-all.txt brl-lb-all.txt brl-md-all.txt brl-ts-nav20_nav40.txt brl-ts-pb65_pb81.txt brl-vr-all.txt pkcs11.txt

brl-bl-18.txt brl-ec-spanish.txt brl-lt-all.txt brl-mn-all.txt brl-ts-nav80.txt brl-tt-all.txt brl-vs-all.txt wm

[root@CentOS7 home]#

上边的命令是找出txt文件,并拷贝到/home目录。

63,第六十三个命令:scp进行远程拷贝文件的命令

[root@CentOS7 home]# ls

brl-ba-all.txt

[root@CentOS7 home]# scp * root@10.211.55.76:/home

Warning: Permanently added ‘10.211.55.76’ (ECDSA) to the list of known hosts.

root@10.211.55.76’s password:

brl-ba-all.txt 100% 58 77.0KB/s 00:00

[root@CentOS7 home]#

以上命令是将当前目录的文件拷贝到对方机器上。

[root@CentOS7 opt]# scp root@10.211.55.76:/home/* .

root@10.211.55.76’s password:

brl-ba-all.txt 100% 58 47.0KB/s 00:00

[root@CentOS7 opt]# ls

brl-ba-all.txt

[root@CentOS7 opt]#

以上这个命令是将对方主机的某个目录的内容,拷贝到当前目录上。

64,第六十四个命令:ln **/链接**

[root@CentOS7 opt]# ln -sf /etc/abcd abc

[root@CentOS7 opt]# ll

total 4

lrwxrwxrwx. 1 root root 9 Nov 29 18:35 abc -> /etc/abcd

-rw-r–r–. 1 root root 451 Nov 29 18:24 pkcs11.txt

drwxr-xr-x. 2 root root 6 Oct 30 2018 rh

[root@CentOS7 opt]#

以上命令将/etc/abcd这个文件软连接到/opt/abc。访问/opt/abc和/etc/abcd内容一样。

[root@CentOS7 opt]# cat abc

123

[root@CentOS7 opt]# cat /etc/abcd

123

[root@CentOS7 opt]# rm -rf abc

[root@CentOS7 opt]# cat /etc/abcd

123

[root@CentOS7 opt]# cat abc

cat: abc: No such file or directory

[root@CentOS7 opt]#

以上命令验证,软连接删除后,源文件是否还在。如果源文件删除,那么软连接文件也会没有数据。

[root@CentOS7 opt]# ls

pkcs11.txt rh

[root@CentOS7 opt]# ln /etc/abcd abc

[root@CentOS7 opt]# ll

total 8

-rw-r–r–. 3 root root 4 Nov 29 18:34 abc

-rw-r–r–. 1 root root 451 Nov 29 18:24 pkcs11.txt

drwxr-xr-x. 2 root root 6 Oct 30 2018 rh

[root@CentOS7 opt]# cat abc

123

[root@CentOS7 opt]# rm -rf /etc/abcd

[root@CentOS7 opt]# cat abc

123

[root@CentOS7 opt]#

以上命令是硬连接,硬连接删除源文件后不影响连接文件。如同复制。

**65,第六十五个命令:**diff 用于比较文件的内容

[root@CentOS7 opt]# ls

abc messages messages.wm pkcs11.txt rh

[root@CentOS7 opt]# diff messages.wm messages

[root@CentOS7 opt]#

以上使用diff对两个文件进行比较。结果是没有不同。

[root@CentOS7 opt]# echo 1 > messages

[root@CentOS7 opt]# echo 2 > messages.wm

[root@CentOS7 opt]# diff messages.wm messages

1c1

< 2

> 1

[root@CentOS7 opt]#

以上命令是对两个文件进行比较内容有何不同,结果是输出不同信息。

**66,第六十六个命令:**date 查看时间的命令

[root@CentOS7 opt]# date

Mon Nov 29 19:12:47 EST 2021

[root@CentOS7 opt]# date ‘+%c’

Mon 29 Nov 2021 07:21:13 PM EST

[root@CentOS7 opt]# date ‘+%D’

11/29/21

[root@CentOS7 opt]# date ‘+%x’

11/29/2021

[root@CentOS7 opt]#

以上命令查看时间信息

[root@CentOS7 opt]# date -s “8:30”

Mon Nov 29 08:30:00 EST 2021

[root@CentOS7 opt]# date ‘+%c’

Mon 29 Nov 2021 08:30:06 AM EST

[root@CentOS7 opt]#

以上命令是更改系统时间。

[root@CentOS7 opt]# hwclock --show

Mon 29 Nov 2021 09:59:04 AM EST -0.498183 seconds

[root@CentOS7 opt]# hwclock

Mon 29 Nov 2021 09:59:38 AM EST -0.151822 seconds

[root@CentOS7 opt]# date

Mon Nov 29 08:36:18 EST 2021

[root@CentOS7 opt]# date

Mon Nov 29 08:36:24 EST 2021

[root@CentOS7 opt]# hwclock --set --date “20211203 14:00:00”

[root@CentOS7 opt]# hwclock

Fri 03 Dec 2021 02:00:03 PM EST -0.975196 seconds

[root@CentOS7 opt]# date

Mon Nov 29 08:37:10 EST 2021

[root@CentOS7 opt]# hwclock --hctosys

[root@CentOS7 opt]# date

Fri Dec 3 14:00:19 EST 2021

[root@CentOS7 opt]#

以上命令是一硬件时间为准(并修改硬件时间),使其硬件和系统时间不一致后,在修改系统时间使其与硬件时间一样。

[root@CentOS7 opt]# hwclock -w

以上命令是以系统时间为基准,修改硬件时间

67,第六十七个命令:wc 统计行数和字节数等信息

[root@CentOS7 opt]# cat /etc/passwd | wc -l

37

[root@CentOS7 opt]#

以上命令统计行数

[root@CentOS7 opt]# cat /etc/passwd | wc

37 73 1916

[root@CentOS7 opt]#

68,第六十八个命令:at 定时执行任务

[root@CentOS7 opt]# echo “echo 1 > wm” > abc

[root@CentOS7 opt]# cat abc

echo 1 > wm

[root@CentOS7 opt]# at -f abc now +1 minutes

job 3 at Fri Dec 3 14:22:00 2021

[root@CentOS7 opt]# ls

abc messages messages.wm pkcs11.txt rh wm

[root@CentOS7 opt]# cat wm

1

[root@CentOS7 opt]#

以上命令是下一个1分钟执行abc脚本,执行后就结束了。

[root@CentOS7 opt]# atq

3 Fri Dec 3 14:22:00 2021 a root

[root@CentOS7 opt]# atrm 3

以上命令是删除队列任务。

69,第六十九个命令:crontab 定时任务命令

[root@CentOS7 opt]# cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) OR jan,feb,mar,apr …

# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

[root@CentOS7 opt]#

以上命令查看crontab配置文件。

[root@CentOS7 opt]# crontab -l

no crontab for root

以上命令查看是否有定时任务

[root@CentOS7 opt]# crontab -e

0 5 * * * echo “Good morning” >> /tmp/wm.txt ///每天早上5点

01 * * * * sh /etc/cron.hourly ///每小时执行/etc/cron.hourly内的脚本

00 15 * * 1,3,5 shutdown -r +5 ///每周一,三,五的下午3:00重新启动系统

以上是写在配置文件中的定时任务。

70,第七十个命令:tree 查看目录树

安装yum -y install tree

[root@CentOS7 opt]# tree /home/

/home/

├── brl-ba-all.txt

├── brl-bd-all.txt

├── brl-bl-18.txt

├── brl-bl-40_m20_m40.txt

├── brl-ec-all.txt

├── brl-ec-spanish.txt

├── brl-eu-all.txt

├── brl-lb-all.txt

├── brl-lt-all.txt

├── brl-mb-all.txt

├── brl-md-all.txt

├── brl-mn-all.txt

├── brl-tn-all.txt

├── brl-ts-nav20_nav40.txt

├── brl-ts-nav80.txt

├── brl-ts-pb40.txt

├── brl-ts-pb65_pb81.txt

├── brl-tt-all.txt

├── brl-vd-all.txt

├── brl-vr-all.txt

├── brl-vs-all.txt

├── brl-xw-all.txt

├── pkcs11.txt

└── wm

├── Desktop

├── Documents

├── Downloads

├── Music

├── Pictures

├── Public

├── Templates

└── Videos

9 directories, 23 files

[root@CentOS7 opt]#

以上吗命令是查看指定目录的目录树信息。

[root@CentOS7 opt]# tree -L 2 /etc/

以上命令是只显示2级的目录树

**71,第七十一个命令:**useradd 新建用户命令

[root@CentOS7 opt]# useradd wangmang

[root@CentOS7 opt]# tail -n 1 /etc/passwd

wangmang❌1001:1001::/home/wangmang:/bin/bash

以上命令是新建一个用户。

**72,第七十二个命令:**userdel 删除用户命令

[root@CentOS7 opt]# userdel -r wangmang

[root@CentOS7 opt]# tail -n 1 /etc/passwd

wm❌1000:1000:wm:/home/wm:/bin/bash

[root@CentOS7 opt]#

**73,第七十三个命令:**passwd 修改用户密码

[root@CentOS7 opt]# passwd wm

Changing password for user wm.

New password:

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:

passwd: all authentication tokens updated successfully.

[root@CentOS7 opt]#

以上命令是给用户修改密码

74,第七十四个命令:chage设置密码过期时间

[root@CentOS7 opt]# chage -d 2029-06-30 wm

[root@CentOS7 opt]#

设置wm用户最后一次修改密码的日期为2029年6月30日

[root@CentOS7 opt]# chage -I 4 wm

[root@CentOS7 opt]#

用户wm从密码过期开始算起,4天不修改密码则密码失效,

如密码在2021年9月8日过期,如果不进行修改,则会在2021年9月12日失效

[root@CentOS7 opt]# chage -E 2025-12-31 wm

[root@CentOS7 opt]#

设置wm用户密码的失效期限为2025-12-31

**75,第七十五个命令:**sort 文本信息排序

[root@CentOS7 opt]# sort /etc/passwd

abrt❌173:173::/etc/abrt:/sbin/nologin

adm❌3:4:adm:/var/adm:/sbin/nologin

unbound❌994:990:Unbound DNS resolver:/etc/unbound:/sbin/nologin

usbmuxd❌113:113:usbmuxd user:/:/sbin/nologin

wm❌1000:1000:wm:/home/wm:/bin/bash

[root@CentOS7 opt]#

以上命令是默认按照字母排序。

-n 按数值大小排序

-t 指定分隔符,没有指定时,以空白作为分隔符

-b 忽略每行开始的空格

-o 结果输出文件

-r 以相反顺序排序

-m 合并已经有序的文件,不排序

-f 忽略大小写

-d 排序时只按字母、数字或空格,忽略其它字符

-u 去除重复的行

-k2.4,5.6 指的是从第二个字段的第4个字符开始比较,一直比到第五个字段的第六个字符。

sort -t: -k2,1 /etc/passwd.old 以冒号隔开的第二个字段:用户名称 对 /etc/passwd进行排序

sort -t: -k3nr /etc/passwd.old 以冒号隔开的第3个字段 uid 反向(由大到小)排序

sort -t: -k4n -k3n /etc/passwd.old 以冒号隔开的第4个字段GID,以及第3个字段uid排序

sort -t: -k4n -u /etc/passwd.old 以冒号隔开的第4个字段GID排序,且只输入唯一的GID

76,第七十六个命令:swapon 用于建立交换分区

[root@CentOS7 opt]# swapon -s

Filename Type Size Used Priority

/dev/dm-1 partition 2146300 74752 -2

[root@CentOS7 opt]# cat /proc/swaps

Filename Type Size Used Priority

/dev/dm-1 partition 2146300 74752 -2

[root@CentOS7 opt]#

以上两个命令功能一样。

[root@CentOS7 opt]# dd if=/dev/zero of=/swapfile1 bs=1024k count=512

512+0 records in

512+0 records out

536870912 bytes (537 MB) copied, 1.47437 s, 364 MB/s

[root@CentOS7 opt]# mkswap /swapfile1

Setting up swapspace version 1, size = 524284 KiB

no label, UUID=8afb1606-ba11-499e-b481-a0be48a924f7

[root@CentOS7 opt]# swapon /swapfile1

swapon: /swapfile1: insecure permissions 0644, 0600 suggested.

[root@CentOS7 opt]# free -h

​ total used free shared buff/cache available

Mem: 1.4G 561M 53M 24M 843M 786M

Swap: 2.5G 74M 2.5G

[root@CentOS7 opt]# swapon -s

Filename Type Size Used Priority

/dev/dm-1 partition 2146300 76032 -2

/swapfile1 file 524284 0 -3

[root@CentOS7 opt]#

以上命令配置交换分区

注:

swapoff -a //停止所有的swap分区

sudo swapoff -v /swapfile //关闭某个分区

swapoff -a //关闭所有swap空间 (包含磁盘、文件)

swapon -a //开启所有swap空间(已经配置到/etc/fstab文件中的)

swapon -s // 显示交换分区的简要信息

free -m //查看swap空间大小

sysctl -q vm.swappiness //查询swap优先级

sudo sysctl vm.swappiness=10 //修改swap优先级,注:即使将值设为0,也并不会禁用swap,只是尽可能少用swap,多用实际内存。

77,第七十七个命令:dump 备份文件类型非xfs

xfsdump备份(文件类型xfs)

安装yum -y install dump/xfsdump

dump 命令使用“备份级别”来实现增量备份,它支持 0~9 共 10 个备份级别。其中,0 级别指的就是完全备份,1~9 级别都是增量备份级别。

-level:就是我们说的 0~9 共 10 个备份级别;

-f 文件名:指定备份之后的文件名;

-u:备份成功之后,把备份时间、备份级别以及实施备份的文件系统等信息,都记录在 /etc/dumpdates 文件中;

-v:显示备份过程中更多的输出信息;

-j:调用 bzlib 库压缩备份文件,其实就是把备份文件压缩为 .bz2 格式,默认压缩等级是 2;

-W:显示允许被 dump 的分区的备份等级及备份时间;

此命令作为了解即可,生产中没见过使用的。下面是例子:

注意:备份的路径这里不能写成/sdb1/ 可以是/dev/sdb1 或/sdb1(刚挂载的目录)

[root@xuegod63 sdb1]# xfsdump -f /opt/dump_sdb1 /dev/sdb1

**78,第七十八个命令:sync/**rsync 同步脏数据使用和远程同步

[root@CentOS7 opt]# sync

[root@CentOS7 opt]#

以上命令刷新文件系统缓冲区

[root@CentOS7 opt]# rsync -av /etc/passwd /opt/1.txt

sending incremental file list

passwd

sent 2,008 bytes received 35 bytes 4,086.00 bytes/sec

total size is 1,916 speedup is 0.94

[root@CentOS7 opt]# ls

1.txt abc rh wm

[root@CentOS7 opt]# cat 1.txt

上边命令是同步数据

[root@CentOS7 opt]# rsync -av /etc/passwd 10.211.55.76:/tmp/1.txt

root@10.211.55.76’s password:

sending incremental file list

passwd

sent 2,008 bytes received 35 bytes 1,362.00 bytes/sec

total size is 1,916 speedup is 0.94

[root@CentOS7 opt]#

上边是同步数据到其他机器上

**79,第七十九个命令:**dd 读写磁盘创建特定大小文件

[root@CentOS7 opt]# dd if=/dev/zero of=/swapfile bs=1024 count=262144

262144+0 records in

262144+0 records out

268435456 bytes (268 MB) copied, 0.585717 s, 458 MB/s

[root@CentOS7 opt]#

创建一个文件大小为256M.

[root@CentOS7 opt]# dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file

1000000+0 records in

1000000+0 records out

1024000000 bytes (1.0 GB) copied, 1.23158 s, 831 MB/s

[root@CentOS7 opt]#

也可以测试下读写速度。

**80,第八十个命令:**ethtool 看网卡信息

[root@CentOS7 opt]# ethtool eth0

Settings for eth0:

​ Supported ports: [ ]

​ Supported link modes: Not reported

​ Supported pause frame use: No

​ Supports auto-negotiation: No

​ Supported FEC modes: Not reported

​ Advertised link modes: Not reported

​ Advertised pause frame use: No

​ Advertised auto-negotiation: No

​ Advertised FEC modes: Not reported

​ Speed: Unknown!

​ Duplex: Unknown! (255)

​ Port: Other

​ PHYAD: 0

​ Transceiver: internal

​ Auto-negotiation: off

​ Link detected: yes ----这里显示yes表示这个网卡有网络

[root@CentOS7 opt]#

以上命令查看网卡信息。

[root@CentOS7 opt]# ethtool -S eth0

NIC statistics:

rx_queue_0_packets: 412270

rx_queue_0_bytes: 540986717

rx_queue_0_drops: 0

rx_queue_0_xdp_packets: 0

rx_queue_0_xdp_tx: 0

rx_queue_0_xdp_redirects: 0

rx_queue_0_xdp_drops: 0

rx_queue_0_kicks: 7

tx_queue_0_packets: 123494

tx_queue_0_bytes: 8073951

tx_queue_0_xdp_tx: 0

tx_queue_0_xdp_tx_drops: 0

tx_queue_0_kicks: 101586

[root@CentOS7 opt]#

查询ethX网口收发包统计

**81,第八十一个命令:**lscpu查看cpu信息

[root@CentOS7 opt]# lscpu 查看cpu信息命令

Architecture: aarch64

Byte Order: Little Endian

CPU(s): 2

On-line CPU(s) list: 0,1 在线的cpu数量 有些时候为了省电或者过热的时候,某些CPU会停止运行

Thread(s) per core: 1 每个核心的线程数

Core(s) per socket: 2 每个插槽上有几个核心

Socket(s): 1

NUMA node(s): 1

Model: 0

BogoMIPS: 48.00

NUMA node0 CPU(s): 0,1

Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 asimddp sha512 asimdfhm dit uscat ilrcpc flagm ssbs sb paca pacg dcpodp flagm2 frint

[root@CentOS7 opt]#

82,第八十二个命令:lsmod 查看模块信息

[root@CentOS7 opt]# lsmod

Module Size Used by

fuse 163840 3

ipt_REJECT 16384 2

nf_reject_ipv4 16384 1 ipt_REJECT

xt_conntrack 16384 5

iptable_nat 16384 1

nf_nat 49152 1 iptable_nat

nf_conntrack 180224 2 xt_conntrack,nf_nat

nf_defrag_ipv6 24576 1 nf_conntrack

nf_defrag_ipv4 16384 1 nf_conntrack

iptable_mangle 16384 1

iptable_security 16384 1

iptable_raw 16384 1

rfkill 45056 2

ip_set 57344 0

nfnetlink 20480 1 ip_set

iptable_filter 16384 1

vfat 28672 1

fat 81920 1 vfat

crct10dif_ce 20480 1

ghash_ce 28672 0

sg 53248 0

sha2_ce 20480 0

virtio_balloon 28672 0

sha256_arm64 28672 1 sha2_ce

sha1_ce 20480 0

uio_pdrv_genirq 20480 0

uio 24576 1 uio_pdrv_genirq

ip_tables 28672 5 iptable_filter,iptable_security,iptable_raw,iptable_nat,iptable_mangle

xfs 1699840 3

libcrc32c 16384 3 nf_conntrack,nf_nat,xfs

sr_mod 32768 0

cdrom 73728 1 sr_mod

virtio_net 57344 0

net_failover 24576 1 virtio_net

failover 20480 1 net_failover

ahci_platform 16384 3

libahci_platform 24576 1 ahci_platform

virtio_mmio 24576 0

dm_mirror 28672 0

dm_region_hash 28672 1 dm_mirror

dm_log 24576 2 dm_region_hash,dm_mirror

dm_mod 151552 12 dm_log,dm_mirror

[root@CentOS7 opt]#

**83,第八十三个命令:**lspci 查看硬件信息

00:01.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller

00:02.0 USB controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 02)

00:03.0 USB controller: NEC Corporation uPD720200 USB 3.0 Host Controller (rev 04)

00:05.0 Ethernet controller: Red Hat, Inc. Virtio network device

00:09.0 Unassigned class [ff00]: Parallels, Inc. Virtual Machine Communication Interface

[root@CentOS7 opt]#

lspci -n/-nn:显示设备的vendor厂商号和device设备号;显示厂商等信息和名称。

lspci -D:显示设备的厂商号、设备号、Class号。

84,第八十四个命令:kill 结束进程

[root@CentOS7 opt]# kill -l

  1. SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
  2. SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
  3. SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
  4. SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
  5. SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
  6. SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
  7. SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
  8. SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
  9. SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
  10. SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
  11. SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
  12. SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
  13. SIGRTMAX-1 64) SIGRTMAX

[root@CentOS7 opt]#

以上命令是列出所有信号名称。

HUP 1 终端断线

INT 2 中断(同 Ctrl + C)

QUIT 3 退出(同 Ctrl + \)

TERM 15 终止

KILL 9 强制终止

CONT 18 继续(与STOP相反, fg/bg命令)

STOP 19 暂停(同 Ctrl + Z)

[root@CentOS7 opt]# kill -9 7258

以上命令是杀死指定的进程

[root@CentOS7 opt]# kill -u wm

以上命令是杀死指定用户的进程。

[root@CentOS7 opt]# killall vim

以上命令是删除所有vim这个进程的命令。

**85,第八十五个命令:**cp 拷贝命令

[root@CentOS7 opt]# ll

drwxr-xr-x. 2 root root 6 Oct 30 2018 rh

[root@CentOS7 opt]# cp -r rh /tmp/a

[root@CentOS7 opt]#

以上命令是拷贝目录及其子目录文件到指定目录并重命名。

[root@CentOS7 opt]# ll abc

-rw-r–r–. 2 root root 12 Dec 3 14:20 abc

[root@CentOS7 opt]# cp abc abc.old

[root@CentOS7 opt]# ll abc.old

-rw-r–r–. 1 root root 12 Dec 3 19:02 abc.old

[root@CentOS7 opt]#

以上命令是复制文件文件。

86,第八十六个命令:shutdown/init/reboot 关机重启

[root@CentOS7 opt]# init 0

以上命令是关机

[root@CentOS7 opt]# reboot

以上命令是重启系统

[root@CentOS7 opt]# shutdown -r +2

以上命令是系统2分钟后重启

[root@CentOS7 opt]# shutdown -h now

以上命令是马上关闭系统

[root@CentOS7 opt]# shutdown -k “now”

以上命令是想所有用户发出信息

87,第八十七个命令:md5sum md5****校验值

[root@CentOS7 opt]# md5sum abc

da71aa65f2b9335c029d523b907f6df3 abc

[root@CentOS7 opt]#

以上命令输出一个值,如果文件有所更改值就会变。

88,第八十八个命令:ssh-keygen 生成密钥

[root@CentOS7 opt]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

/root/.ssh/id_rsa already exists.

Overwrite (y/n)? y

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:0Qd7rciRRBo1qo/6+7xCVgFojlWyKSh3PhoRDNNKGOo root@CentOS7

The key’s randomart image is:

±–[RSA 2048]----+

|==. .oo…o* |

|o+o.++ .* = . |

|=.+=+ +.= o . |

|+…=. …o = . |

| E. o …S o . |

| o .oo |

| . o. . |

| … |

| …o++. |

±—[SHA256]-----+

[root@CentOS7 opt]#

以上命令是生成一个密钥。

**89,第八十九个命令:**more 查看文件信息

[root@CentOS7 opt]# more /var/log/messages

查看啊某文件信息,按空格键翻页

more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容

**90,第九十个命令:**less 查看文件信息

[root@CentOS7 opt]# less /var/log/messages

查看啊某文件信息,按空格键翻页

less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件

91,第九十一个命令:source 初始化文件

[root@CentOS7 opt]# source /etc/profile

[root@CentOS7 opt]#

以上命令初始化文件,一般是改变了某个系统文件后需要生效使用这个命令

附加 /etc/sysctl.conf 内核配置文件

一、内存&缓存

kernel.sysrq = 0 #内核设置验证为0

kernel.core_uses_pid = 1 #控制内核的系统请求调试功能开启,控制核心转储附加PID到核心文件名,适用于多线程

kernel.msgmnb = 65536 #每个消息队列的最大字节限制

kernel.msgmax = 65536 #每个消息的最大size

kernel.shmmax = 68719476736 #定义了共享内存段的最大尺寸(以字节为单位,缺省值为2097152)

kernel.shmall = 4294967296 #表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152)

二、网桥设置,iptable不对网桥进行处理

net.bridge.bridge-nf-call-ip6tables = 0

net.bridge.bridge-nf-call-iptables = 0

net.bridge.bridge-nf-call-arptables = 0

三、网络

net.ipv4.ip_forward = 0 #控制IP包转发

net.ipv4.conf.default.rp_filter = 1 #控制源路由验证

net.ipv4.conf.default.accept_source_route = 0 #不接受源路由

net.ipv4.tcp_syncookies = 1 #关闭TCP SYNCOOKIES 的使用

以上参数为文件默认自带,如果对参数进行修改可以使用 /sbin/sysctl -p命令让配置立即生效。如果需要配置其他内核参数请查看 /proc/sys目录,此目录存放着所有的内核参数,直接修改此目录的值会在重启机器时失效,通过将参数添加到 /etc/sysctl.conf中使参数修改永久生效。

92,第九十二个命令:vim****给文件加密

[root@www ~]# vim/vi wm.txt

2) 进到编辑模式后输入完内容后,按ESC后,在输入:X(注意是大写的X),回车;

3) 这时系统提示让你输入密码,2次,如下所示:

输入密码: *******

请再输入一次: *******

4) 保存后退出,现在这个文件已经加密了;

5) 用cat或more查看文件内容,显示为乱码;用 vim/vi 重新编辑这个文件,会提示输入密码,如果输入的密码不正确,同样会显示为乱码!

注意:文件加密后,千万别忘了密码!

解密用vi加密的文件(前提是你知道加密的密码):

1,用 vim/vi 打开文件如text.txt,要输入正确的密码,然后在编辑时,将密码设置为空,方法是输入下面的命令:

:set key=

然后直接回车,保存文件后,文件已经解密了。

2,或者这样也行:

在正确打开文件后用 “:X” 指令,然后给一个空密码也可以。保存用“wq!”保存。

两种方法实际上效果是一样的。

**93,第九十三个命令:**yum 安装包

yum install nginx下载并安装一个nginx包

yum localinstall nginx.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系

yum remove nginx 写在一个nignx包

yum list 列出当前系统中安装的所有包

yum clean all 删除所有缓存的包和头文件

Yum repolist 查看yum源的信息

94,第五十二个命令:mkfs.* 更改文件的类型**。**

[root@CentOS7 /]# mkfs.ext4 swapfile

mke2fs 1.42.9 (28-Dec-2013)

swapfile is not a block special device.

Proceed anyway? (y,n) y

Discarding device blocks: done

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

65536 inodes, 262144 blocks

13107 blocks (5.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=33816576

32 block groups

8192 blocks per group, 8192 fragments per group

2048 inodes per group

Superblock backups stored on blocks:

​ 8193, 24577, 40961, 57345, 73729, 204801, 221185

Allocating group tables: done

Writing inode tables: done

Creating journal (8192 blocks): done

Writing superblocks and filesystem accounting information: done

[root@CentOS7 /]#

上边的命令是更改文件的类型为ext4。

例:

mkfs.xfs /dev/sda6 # 把该设备格式化成xfs文件系统

mke2fs -j /dev/sda6 # 把该设备格式化成ext3文件系统

mkfs.reiserfs /dev/sda6 # 格式化成reiserfs文件系统

mkfs.vfat /dev/sda6 # 格式化成fat32文件系统

mkfs.msdos /dev/sda6 # 格式化成fat16文件系统,msdos就是fat16

mkdosfs /dev/sda6 # 格式化成msdos文件系统

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

95,第五十二个命令:history 查看历史命令

[root@CentOS7 /]# history

上个命令是查看历史命令

历史命令文件记录在 ~/.bash_history中如果找不到,请去下面路径

[root@CentOS7 /]# cat /etc/profile | grep HISTSIZE

HISTSIZE=1000

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

[root@CentOS7 /]#

以上命令是最多存书多少历史命令。

**96,第九十六个命令:**sudo 给普通用户授权

[root@CentOS7 opt]# visudo

root ALL=(ALL) ALL

wm ALL=(ALL) ALL

执行以上命令,在root这一行,下添加你要授权的用户名即可。

或者查看这个文件 /etc/sudoers

[root@localhost ~]# su wm

[wm@localhost root]$ yum -y install nginx

已加载插件:fastestmirror

您需要 root 权限执行此命令。

[wm@localhost root]$ sudo yum -y install nginx

我们信任您已经从系统管理员那里了解了日常注意事项。

总结起来无外乎这三点:

#1) 尊重别人的隐私。

#2) 输入前要先考虑(后果和风险)。

#3) 权力越大,责任越大。

[sudo] wm 的密码:

已加载插件:fastestmirror

Loading mirror speeds from cached hostfile

* base: mirrors.huaweicloud.com

* extras: mirrors.huaweicloud.com

* updates: mirrors.huaweicloud.com

base | 3.6 kB 00:00:00

extras | 2.9 kB 00:00:00

updates | 2.9 kB 00:00:00

没有可用软件包 nginx。

错误:无须任何处理

[wm@localhost root]$

以上命令就是普通用户没有权限安装包,需要提权到root。

**97,第九十七个命令:**su 切换用户

[root@CentOS7 opt]# su - wm -c “touch su-test”

[root@CentOS7 opt]# cat /home/wm/su-test

[root@CentOS7 opt]# ls /home/wm/su-test

/home/wm/su-test

[root@CentOS7 opt]#

以上命令是切换wm用户,执行一个命令,不进入wm bash环境。

[root@CentOS7 opt]# su - wm

[wm@CentOS7 ~]$ ls

Desktop Documents Downloads Music Pictures Public su-test Templates Videos

[wm@CentOS7 ~]$

以上命令是切换到wm这个用户,添加“-”是bash也切换。

**98,第九十八个命令:**vim 编辑文件命令

【G】 光标移动到文件的最后一行(第一个字符处)

【nG】 n为数字(下同),移动到当前文件中第n行

【gg】 移动到文件的第一行,相当于"1G"

【dd】 删除光标所在的一整行

【ndd】 删除光标所在的向下n行

【nyy】 复制光标所在的向下n行

【p,P】 p为将已经复制的数据在光标下一行粘贴;P为将已经复制的数据在光标上一行粘贴

【:q!】 不保存强制离开vi

【:wq】 保存后离开

【:wq!】 强制保存后离开

**99,第九十九个命令:**touch 创建一个文件

[root@CentOS7 opt]# touch file{1…10}

[root@CentOS7 opt]# ls

1.txt a abc abc.old asdasd file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 messages messages.wm pkcs11.txt rh wm

[root@CentOS7 opt]#

以上命令是创建文件10个

[root@CentOS7 opt]# touch -r wm /etc/passwd

[root@CentOS7 opt]# ll wm

-rw-r–r–. 1 root root 2 Dec 3 23:44 wm

[root@CentOS7 opt]# ll /etc/passwd

-rw-r–r–. 1 root root 1916 Dec 3 23:44 /etc/passwd

[root@CentOS7 opt]#

以上命令是让两个文件的时间戳一样,touch -r目标文件 源文件

100,第一百个命令:who 查看谁在登陆系统

[root@CentOS7 opt]# who

wm :0 2021-11-29 05:02 (:0)

wm pts/0 2021-11-29 05:02 (:0)

root pts/1 2021-11-29 05:03 (10.211.55.2)

[root@CentOS7 opt]#

以上命令查看都有谁哪个用户在登陆系统。

101,第一百零一个命令:last 查看详细的用户登陆信息

[root@CentOS7 opt]# last

root pts/1 10.211.55.2 Mon Nov 29 05:03 still logged in

wm pts/0 :0 Mon Nov 29 05:02 still logged in

wm :0 :0 Mon Nov 29 05:02 still logged in

reboot system boot 5.11.12-300.el7. Mon Nov 29 04:19 - 23:54 (4+19:34)

wtmp begins Mon Nov 29 04:19:10 2021

[root@CentOS7 opt]#

以上命令查看那个用户登陆系统,并显示IP地址。

[root@CentOS7 opt]# last -n 10 -f /var/log/btmp

指定/var/log/btmp文件,查看登录系统的用户相关信息

**102,第一百零二个命令:ifup/**ifdown 关闭和开启网卡

[root@CentOS7 opt]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s5

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=dhcp

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

NAME=enp0s5

UUID=6124659a-5d77-4333-8f91-a624a34e5a42

DEVICE=enp0s5

ONBOOT=no

[root@CentOS7 opt]# ifdown enp0s5 && ifup enp0s5

此命令不要轻易使用,生产环境慎用。

103,第一百零三个命令**😗* type 命令用来显示指定命令的类型

[root@CentOS7 opt]# type ls

ls is aliased to `ls --color=auto’

[root@CentOS7 opt]# type cat

cat is hashed (/usr/bin/cat)

[root@CentOS7 opt]# type uptime

uptime is /usr/bin/uptime

[root@CentOS7 opt]#

104,第一百零四个命令:locate****依据名字查找文件

[root@CentOS7 opt]# locate /etc/pa

/etc/pam.d

/etc/papersize

/etc/passwd

/etc/passwd-

/etc/pam.d/atd

/etc/pam.d/chfn

/etc/pam.d/chsh

/etc/pam.d/config-util

/etc/pam.d/crond

/etc/pam.d/cups

/etc/pam.d/fingerprint-auth

/etc/pam.d/gdm-autologin

/etc/pam.d/gdm-fingerprint

/etc/pam.d/gdm-launch-environment

/etc/pam.d/gdm-password

/etc/pam.d/gdm-pin

/etc/pam.d/gdm-smartcard

/etc/pam.d/login

/etc/pam.d/other

/etc/pam.d/passwd

/etc/pam.d/password-auth

/etc/pam.d/pluto

/etc/pam.d/polkit-1

/etc/pam.d/postlogin

/etc/pam.d/ppp

/etc/pam.d/remote

/etc/pam.d/runuser

/etc/pam.d/runuser-l

/etc/pam.d/setup

/etc/pam.d/smartcard-auth

/etc/pam.d/smtp

/etc/pam.d/smtp.postfix

/etc/pam.d/sshd

/etc/pam.d/su

/etc/pam.d/su-l

/etc/pam.d/sudo

/etc/pam.d/sudo-i

/etc/pam.d/system-auth

/etc/pam.d/systemd-user

/etc/pam.d/vlock

/etc/pam.d/xserver

[root@CentOS7 opt]#

以上命令是查找/etc这个目录里面的pa开头的文件。

105,第一百零五个命令:systemctl 服务守护进程

[root@CentOS7 opt]# systemctl restart nginx

start:立刻启动后面接的服务进程名字。

stop:立刻关闭后面接的服务进程名字。

restart:先关闭后启动,即执行 stop 再 start 的意思。

reload:不关闭服务情况下,重新载入配置文件,让设置生效。

enable:设置下次开机时,服务会被启动。

disable:设置下次开机时,服务不会被启动。

status:目前后面接的这个服务状态,会列出有没有正在执行、开机时是否启动等信息。

**106,第一百零六个命令:**chsh 查看和修改当前登录的Shell

[root@CentOS7 opt]# chsh -l

/bin/sh

/bin/bash

/usr/bin/sh

/usr/bin/bash

/bin/tcsh

/bin/csh

[root@CentOS7 opt]#

[root@CentOS7 opt]# cat /etc/shells

/bin/sh

/bin/bash

/usr/bin/sh

/usr/bin/bash

/bin/tcsh

/bin/csh

[root@CentOS7 opt]#

以上命令是查看与那些bash环境。

[root@CentOS7 opt]# chsh -s /bin/sh

Changing shell for root.

Shell changed.

[root@CentOS7 opt]#

以上命令是切换到其他环境。

**107,第一百零七个命令:**patch指令让用户修改更新原始文件

[root@CentOS7 opt]# mkdir wm

[root@CentOS7 opt]# cd wm

[root@CentOS7 wm]# ls

[root@CentOS7 wm]# echo 123 > a

[root@CentOS7 wm]# echo 456 > b

[root@CentOS7 wm]# ls

a b

[root@CentOS7 wm]# diff -Naru a b > c.patch

[root@CentOS7 wm]# cat c.patch

1c1

< 123

> 456

[root@CentOS7 wm]# patch < c.patch

patching file a

[root@CentOS7 wm]# cat a

456

[root@CentOS7 wm]# cat b

456

[root@CentOS7 wm]#

以上命令是使其a和b内容相同。

108,第一百零八个命令:mpstat 是实时系统监控工具

[root@CentOS7 wm]# mpstat -P ALL 2

Linux 5.11.12-300.el7.aarch64 (CentOS7) 12/04/2021 aarch64 (2 CPU)

05:10:09 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle

05:10:12 AM all 0.25 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.75

05:10:12 AM 0 0.49 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.51

05:10:12 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

05:10:12 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle

05:10:14 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

05:10:14 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

05:10:14 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle

Average: all 0.12 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.88

Average: 0 0.12 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.88

Average: 1 0.12 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.88

[root@CentOS7 wm]#

以上命令查看cpu使用信息

%idle 主要看这个信息,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100,这个高说明cpu不忙。

109,第一百零九命令:unset命令用于删除已定义的shell变量

[root@CentOS7 wm]# export a=1

[root@CentOS7 wm]# env | grep a=1

a=1

[root@CentOS7 wm]# unset -v a

[root@CentOS7 wm]# env | grep a=1

[root@CentOS7 wm]#

以上命令是删除某个变量

110,第一百一十个命令:nohup 让进程在后台运行的命令

[root@CentOS7 wm]# nohup command &

以上命令将“command”替换成你的进程命令,或者启动脚本的命令。

工作中用到的少。这个比较老了。

111,第一百一十一个命令:ipcs 输出进程之间的通讯信息

[root@CentOS7 wm]# ipcs -a

------ Message Queues --------

key msqid owner perms used-bytes messages

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

0x00000000 16 wm 777 16384 1 dest

0x00000000 17 wm 777 3145728 2 dest

0x00000000 25 wm 600 524288 2 dest

0x00000000 28 wm 777 3145728 2 dest

0x00000000 31 wm 600 524288 2 dest

0x00000000 40 wm 600 16777216 2 dest

0x00000000 41 wm 600 524288 2 dest

0x00000000 42 wm 777 1769472 2 dest

0x00000000 54 wm 600 524288 2 dest

------ Semaphore Arrays --------

key semid owner perms nsems

[root@CentOS7 wm]#

[root@CentOS7 wm]# ipcs -t

------ Message Queues Send/Recv/Change Times --------

msqid owner send recv change

------ Shared Memory Attach/Detach/Change Times --------

shmid owner attached detached changed

16 wm Nov 29 05:02:39 Nov 29 05:02:39 Nov 29 05:02:38

17 wm Nov 29 05:02:41 Not set Nov 29 05:02:40

25 wm Nov 29 05:02:41 Not set Nov 29 05:02:41

28 wm Nov 29 05:02:41 Not set Nov 29 05:02:41

31 wm Nov 29 05:02:42 Not set Nov 29 05:02:42

40 wm Nov 29 05:02:43 Nov 29 05:02:43 Nov 29 05:02:43

41 wm Nov 29 05:02:43 Not set Nov 29 05:02:43

42 wm Nov 29 05:02:43 Not set Nov 29 05:02:43

54 wm Nov 29 05:03:04 Not set Nov 29 05:03:04

------ Semaphore Operation/Change Times --------

semid owner last-op last-changed

[root@CentOS7 wm]#

ipcs -a 是默认的输出信息 打印出当前系统中所有的进程间通信方式的信息

ipcs -m 打印出使用共享内存进行进程间通信的信息

ipcs -q 打印出使用消息队列进行进程间通信的信息

ipcs -s 打印出使用信号进行进程间通信的信息

**112,第一百一十二个命令:**ipcrm移除一个消息对象

ipcrm -M shmkey 删除用shmkey创建的共享内存段

ipcrm -m shmid 删除用shmid标识的共享内存段

[root@CentOS7 wm]# ipcs -a

------ Message Queues --------

key msqid owner perms used-bytes messages

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

0x00000000 16 wm 777 16384 1 dest

0x00000000 17 wm 777 3145728 2 dest

0x00000000 25 wm 600 524288 2 dest

0x00000000 28 wm 777 3145728 2 dest

0x00000000 31 wm 600 524288 2 dest

0x00000000 40 wm 600 16777216 2 dest

0x00000000 41 wm 600 524288 2 dest

0x00000000 42 wm 777 1769472 2 dest

0x00000000 54 wm 600 524288 2 dest

------ Semaphore Arrays --------

key semid owner perms nsems

[root@CentOS7 wm]# ipcrm -m 17

[root@CentOS7 wm]# ipcrm -m 19

ipcrm: invalid id (19) —没有这个参数,因为ipcs -t 没有。

[root@CentOS7 wm]#

以上命令要配合ipcs查询出来的参数配合使用。

ipcrm -Q msgkey 删除用msqkey创建的消息队列

ipcrm -q msqid 删除用msqid标识的消息队列

ipcrm -S semkey 删除用semkey创建的信号

ipcrm -s semid 删除用semid标识的信号

113,第一百一十三命令:bc 计算器

[root@CentOS7 wm]# bc

bc 1.06.95

Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.

This is free software with ABSOLUTELY NO WARRANTY.

For details type `warranty’.

1+2

3

4x5

(standard_in) 2: syntax error

48*5

240

[root@CentOS7 wm]#

**114,第一百一十四个命令:**fsck用来维护不一致的文件系统。

如果磁盘发生问题,可使用fsck命令对文件系统进行检查

[root@CentOS7 wm]# fsck

fsck from util-linux 2.23.2

fsck.fat 3.0.20 (12 Jun 2013)

0x41: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.

  1. Remove dirty bit
  2. No action

?

^C[root@CentOS7 wm]# fsck

fsck from util-linux 2.23.2

fsck.fat 3.0.20 (12 Jun 2013)

0x41: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.

  1. Remove dirty bit
  2. No action

? 2

There are differences between boot sector and its backup.

This is mostly harmless. Differences: (offset:original/backup)

65:01/00

  1. Copy original to backup
  2. Copy backup to original
  3. No action

? 3

/dev/sda1: 19 files, 2316/153296 clusters

[root@CentOS7 wm]# 以上命令自动检查磁盘

-a 自动修复文件系统,不询问任何问题。

-o f 对系统进行强制检查,不论系统是否在clean等状态

[root@CentOS7 wm]# fsck -t ext3 -r /usr/local

以上命令是修复坏的分区文件系统

115,第一百一十五个命令:rz/sz 上传下载

这个命令用到的时候比较多,经常上传文件到服务器里面。

如果没有这个命令安装命令如下:

yum install lrzsz

[root@CentOS7 wm]# rz -be

以上这个命令是上传本地的文件到服务器上

[root@CentOS7 wm]# sz -be a(文件名)

以上命令是下载服务器的文件到本地

116,第一百一十六个命令:sort/uniq 排序工具

[root@localhost ~]# cat a

155

12

14

9

4129

419

41

[root@localhost ~]# sort a

12

14

155

41

4129

419

9

[root@localhost ~]# sort -n a

9

12

14

41

155

419

4129

[root@localhost ~]#

以上命令是sort的排序。下面是参数介绍

-b 此参数忽略每行前面开始出的空格字符。

-c 此参数检查文件是否已经按照顺序排序。

-d 此参数排序时,处理英文字母、数字及空格字符外,忽略其他的字符。

-f 此参数排序时,将小写字母视为大写字母。

-m 此参数将几个排序好的文件进行合并。

-n 此参数依照数值的大小排序。

-u 此参数意味着是唯一的(unique),输出的结果是去完重了的。

-o 此参数<输出文件> 将排序后的结果存入指定的文件。

-r 此参数以相反的顺序来排序。

[root@localhost ~]# cat a

155

12

14

9

4129

419

41

41

41

12

12

[root@localhost ~]# uniq a

155

12

14

9

4129

419

41

12

[root@localhost ~]# uniq -d a

41

12

[root@localhost ~]#

以上命令是uniq的排序,下面是参数。

-c 此参数在每列旁边显示该行重复出现的次数。

-d 此参数仅显示重复出现的行列。

-f 此参数忽略比较指定的栏位。

-s 此参数忽略比较指定的字符。

-u 此参数仅显示出一次的行列。

**117,第一百一十七个命令:**nice 设置进程优先级

优先级的范围:-20 — 19。(先关服务在配置)

[root@localhost ~]# ps -le

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

4 S 0 1 0 0 80 0 - 23146 do_epo ? 00:00:02 systemd

1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd

1 I 0 3 2 0 60 -20 - 0 rescue ? 00:00:00 rcu_gp

1 I 0 4 2 0 60 -20 - 0 rescue ? 00:00:00 rcu_par_gp

1 I 0 6 2 0 60 -20 - 0 worker ? 00:00:00 kworker/0:0H-ev

1 I 0 8 2 0 60 -20 - 0 rescue ? 00:00:00 mm_percpu_wq

1 S 0 9 2 0 80 0 - 0 rcu_ta ? 00:00:00 rcu_tasks_rude_

1 S 0 10 2 0 80 0 - 0 rcu_ta ? 00:00:00 rcu_tasks_trace

1 I 0 21500 2 0 80 0 - 0 worker ? 00:00:00 kworker/1:1-mm_

4 R 0 21580 1115 0 80 0 - 5152 - ? 00:00:00 sshd

4 S 0 21584 21580 0 80 0 - 26865 do_wai pts/0 00:00:00 bash

1 I 0 21633 2 0 80 0 - 0 worker ? 00:00:00 kworker/0:2-eve

1 I 0 21640 2 0 80 0 - 0 worker ? 00:00:00 kworker/1:2-mm_

1 I 0 21663 2 0 80 0 - 0 worker ? 00:00:00 kworker/0:1-kdm

4 S 0 21665 828 0 80 0 - 4829 do_sel ? 00:00:00 dhclient

1 I 0 21695 2 0 80 0 - 0 worker ? 00:00:00 kworker/1:0-mm_

1 I 0 21696 2 0 80 0 - 0 worker ? 00:00:00 kworker/0:0-kdm

4 S 89 21702 1477 0 80 0 - 4983 do_epo ? 00:00:00 pickup

4 R 0 21704 21584 0 80 0 - 27844 - pts/0 00:00:00 ps

[root@localhost ~]#

以上命令查看 “ni”这个参数为优先级。

[root@localhost ~]# ps -le | grep “httpd”

4 S 0 21826 1 0 80 0 - 5260 do_sel ? 00:00:00 httpd

5 S 48 21827 21826 0 80 0 - 5260 inet_c ? 00:00:00 httpd

5 S 48 21828 21826 0 80 0 - 5260 inet_c ? 00:00:00 httpd

5 S 48 21829 21826 0 80 0 - 5260 inet_c ? 00:00:00 httpd

5 S 48 21830 21826 0 80 0 - 5260 inet_c ? 00:00:00 httpd

5 S 48 21831 21826 0 80 0 - 5260 inet_c ? 00:00:00 httpd

[root@localhost ~]# nice -n -5 httpd

AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using localhost.localdomain. Set the ‘ServerName’ directive globally to suppress this message

httpd (pid 21826) already running

[root@localhost ~]# systemctl stop httpd

[root@localhost ~]# nice -n -5 httpd

AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using localhost.localdomain. Set the ‘ServerName’ directive globally to suppress this message

[root@localhost ~]# nice -n -5 httpd

AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using localhost.localdomain. Set the ‘ServerName’ directive globally to suppress this message

httpd (pid 21852) already running

[root@localhost ~]# ps -le | grep “httpd”

1 S 0 21852 1 0 75 -5 - 5260 do_sel ? 00:00:00 httpd

5 S 48 21853 21852 0 75 -5 - 5260 inet_c ? 00:00:00 httpd

5 S 48 21854 21852 0 75 -5 - 5260 inet_c ? 00:00:00 httpd

5 S 48 21855 21852 0 75 -5 - 5260 inet_c ? 00:00:00 httpd

5 S 48 21856 21852 0 75 -5 - 5260 inet_c ? 00:00:00 httpd

5 S 48 21857 21852 0 75 -5 - 5260 inet_c ? 00:00:00 httpd

[root@localhost ~]#

以上命令是配置httpd进程的优先级

**118,第一百一十八个命令:**renice 在进程运行时更改优先级

[root@localhost ~]# ps -ef | grep httpd

root 21852 1 0 20:52 ? 00:00:00 httpd

apache 21853 21852 0 20:52 ? 00:00:00 httpd

apache 21854 21852 0 20:52 ? 00:00:00 httpd

apache 21855 21852 0 20:52 ? 00:00:00 httpd

apache 21856 21852 0 20:52 ? 00:00:00 httpd

apache 21857 21852 0 20:52 ? 00:00:00 httpd

root 21888 21584 0 20:55 pts/0 00:00:00 grep --color=auto httpd

[root@localhost ~]# renice -10 21856

21856 (进程 ID) 旧优先级为 -5,新优先级为 -10

[root@localhost ~]# ps -ef | grep httpd

root 21852 1 0 20:52 ? 00:00:00 httpd

apache 21853 21852 0 20:52 ? 00:00:00 httpd

apache 21854 21852 0 20:52 ? 00:00:00 httpd

apache 21855 21852 0 20:52 ? 00:00:00 httpd

apache 21856 21852 0 20:52 ? 00:00:00 httpd

apache 21857 21852 0 20:52 ? 00:00:00 httpd

root 21891 21584 0 20:56 pts/0 00:00:00 grep --color=auto httpd

[root@localhost ~]# ps -el | grep httpd

1 S 0 21852 1 0 75 -5 - 5260 do_sel ? 00:00:00 httpd

5 S 48 21853 21852 0 75 -5 - 5260 inet_c ? 00:00:00 httpd

5 S 48 21854 21852 0 75 -5 - 5260 inet_c ? 00:00:00 httpd

5 S 48 21855 21852 0 75 -5 - 5260 inet_c ? 00:00:00 httpd

5 S 48 21856 21852 0 70 -10 - 5260 inet_c ? 00:00:00 httpd

5 S 48 21857 21852 0 75 -5 - 5260 inet_c ? 00:00:00 httpd

[root@localhost ~]#

以上命令在httpd进程运行时,修改他的优先级。

119,第一百一十九个命令:whoami 查看目前的用户是谁

[root@localhost ~]# whoami

root

[root@localhost ~]#

120,第一百二十个命令: sleep 睡觉命令**,一般用在脚本里。**

[root@localhost ~]# sleep 1h

以上命令是 睡一个小时。此时进程不会中断。

121,第一百二十一个命令:ulimit 针对用户限制工具

[root@localhost bin]# ulimit -a

core file size (blocks, -c) 0

data seg size (kbytes, -d) unlimited

scheduling priority (-e) 0

file size (blocks, -f) unlimited

pending signals (-i) 5726

max locked memory (kbytes, -l) 64

max memory size (kbytes, -m) unlimited

open files (-n) 1024

pipe size (512 bytes, -p) 8

POSIX message queues (bytes, -q) 819200

real-time priority (-r) 0

stack size (kbytes, -s) 8192

cpu time (seconds, -t) unlimited

max user processes (-u) 5726

virtual memory (kbytes, -v) unlimited

file locks (-x) unlimited

[root@localhost bin]#

以上命令是显示目前的系统资源限制信息

[root@localhost bin]# ulimit -u 500

[root@localhost bin]# ulimit -a

core file size (blocks, -c) 0

data seg size (kbytes, -d) unlimited

scheduling priority (-e) 0

file size (blocks, -f) unlimited

pending signals (-i) 5726

max locked memory (kbytes, -l) 64

max memory size (kbytes, -m) unlimited

open files (-n) 1024

pipe size (512 bytes, -p) 8

POSIX message queues (bytes, -q) 819200

real-time priority (-r) 0

stack size (kbytes, -s) 8192

cpu time (seconds, -t) unlimited

max user processes (-u) 500

virtual memory (kbytes, -v) unlimited

file locks (-x) unlimited

[root@localhost bin]#

以上命令设置单一用户程序上限

vi /etc/security/limits.conf

hard nproc 65535

soft nproc 65535

hard nofile 65535

soft nofile 65535

以上内容表示,将-u和-n的软限制和硬限制同时修改为65535。

soft软限制

hard硬限制

122,第一百二十二个命令:partprobe 和sgdisk这个命令是刷新磁盘**,和去除历史记录。**

[root@localhost bin]# partprobe

[root@localhost bin]#

以上命令是你在刚做完分区工作后,使用这个命令刷新下,才会生效。

[root@localhost bin]# yum install gdisk -y

[root@localhost bin]# sgdisk --zap-all /dev/sdb1

使用gdisk 命令是清除有关磁盘的历史记录,一般ceph挂载0sd时会用到。

**123,第一百二十三个命令:**chroot命令用于改变根目录

[root@localhost mnt]# chroot /mnt/rootfs/

以上命令是语法格式,正常使用这个命令会报错:chroot: failed to run command ‘/bin/bash’: No such file or directory 这个错误,因为没有正确拷贝依赖库。日常中不会更改根目录.

**附加命令****1,**fuser强制卸载挂载

常用选项:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

-a:显示所有命令行中指定的文件,默认情况下被访问的文件才会被显示。

-c:和-m一样,用于POSIX兼容。

-k:杀掉访问文件的进程。如果没有指定-signal就会发送SIGKILL信号。

-i:杀掉进程之前询问用户,如果没有-k这个选项会被忽略。

-l:列出所有已知的信号名称。

-m:name 指定一个挂载文件系统上的文件或者被挂载的块设备(名称name)。这样所有访问这个文件或者文件系统的进程都会被列出来。如果指定的是一个目录会自动转换成"name/",并使用所有挂载在那个目录下面的文件系统。

-n:space 指定一个不同的命名空间(space).这里支持不同的空间文件(文件名,此处默认)、tcp(本地tcp端口)、udp(本地udp端口)。对于端口, 可以指定端口号或者名称,如果不会引起歧义那么可以使用简单表示的形式,例如:name/space (即形如:80/tcp之类的表示)。

-s:静默模式,这时候-u,-v会被忽略。-a不能和-s一起使用。

-signal:使用指定的信号,而不是用SIGKILL来杀掉进程。可以通过名称或者号码来表示信号(例如-HUP,-1),这个选项要和-k一起使用,否则会被忽略。

-u:在每个PID后面添加进程拥有者的用户名称。

-v:详细模式。输出似ps命令的输出,包含PID,USER,COMMAND等许多域,如果是内核访问的那么PID为kernel. -V 输出版本号。

-4:使用IPV4套接字,不能和-6一起应用,只在-n的tcp和udp的命名存在时不被忽略。

-6:使用IPV6套接字,不能和-4一起应用,只在-n的tcp和udp的命名存在时不被忽略。

- 重置所有的选项,把信号设置为SIGKILL.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

参数:

文件:可以是文件名或者TCP、UDP端口号。

使用示例:

显示使用某个文件的进程信息

这个命令在umount的时候很有用,可以找到还有哪些用到这个设备了。

$ fuser -um /dev/sda2

/dev/sda2: 6378c(quietheart) 6534c(quietheart) 6628(quietheart)

6653c(quietheart) 7429c(quietheart) 7549c(quietheart) 7608c(quietheart)

杀掉打开readme文件的程序

这里,会在kill之前询问是否确定。最好加上-v以便知道将要杀那个进程。

$fuser -m -k -i readme

查看那些程序使用tcp的80端口

$fuser -v -n tcp 80 或 $fuser -v 80/tcp

fuser不同信号的应用

用 -l参数可以列出fuser所知的信号

[root@_mongodb_117 ~]# fuser -l

HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM

STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS

UNUSED

fuser可以发送它已知的信号给访问的指定文件进程而代替-k参数默认发送的SIGKILL,例如:只是挂起进程,那么发送HUP信号就可以了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

[root@_mongodb_117 ~]# fuser -v /root/install.log

用户 进程号 权限 命令

/root/install.log: root 3347 f… tail

[root@_mongodb_117 ~]# fuser -k -SIGHUP /root/install.log

/root/install.log: 3347

[root@_mongodb_117 ~]# fuser -v /root/install.log

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

要列出使用/etc/passwd文件的本地进程的进程号,请输入:

fuser /etc/passwd

要列出使用/etc/filesystems文件的进程的进程号和用户登录名,请输入:

fuser -u /etc/filesystems

容器篇**:**

容器安装**:**安装docker

一,第一种yum安装方式

第一种:执行以下命令,安装的是最新版本docker(对yum源有依赖)。

[root@CentOS7 ~]# yum -y install docker-ce

yum源:

http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

第二种:下载rpm包,传到服务器在安装

下载地址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

下载到本地后,传到服务器中,执行:rpm -ivh *.rpm

容器的常用命令**😗*docker

**124,第一百二十四个命令:**docker version 查看docker版本

[root@CentOS7 ~]# docker version

Client: Docker Engine - Community

Version: 20.10.11

API version: 1.41

Go version: go1.16.9

Git commit: dea9396

Built: Thu Nov 18 00:36:55 2021

OS/Arch: linux/arm64

Context: default

Experimental: true

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

[root@CentOS7 ~]#

125,第一百二十五个命令docker info 查看容器信息

[root@CentOS7 ~]# docker info

Client:

Context: default

Debug Mode: false

Plugins:

app: Docker App (Docker Inc., v0.9.1-beta3)

buildx: Build with BuildKit (Docker Inc., v0.6.3-docker)

Server:

Containers: 0

Running: 0

Paused: 0

Stopped: 0

Images: 0

Server Version: 20.10.11

Storage Driver: overlay2

Backing Filesystem: xfs

Supports d_type: true

Native Overlay Diff: true

userxattr: false

Logging Driver: json-file

Cgroup Driver: cgroupfs

Cgroup Version: 1

Plugins:

Volume: local

Network: bridge host ipvlan macvlan null overlay

Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog

Swarm: inactive

Runtimes: runc io.containerd.runc.v2 io.containerd.runtime.v1.linux

Default Runtime: runc

Init Binary: docker-init

containerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5d

runc version: v1.0.2-0-g52b36a2

init version: de40ad0

Security Options:

seccomp

Profile: default

Kernel Version: 5.11.12-300.el7.aarch64

Operating System: CentOS Linux 7 (AltArch)

OSType: linux

Architecture: aarch64

CPUs: 2

Total Memory: 1.425GiB

Name: CentOS7.9

ID: QJRH:GJVK:YHVO:JYUL:KK25:HME5:RS7W:HOTM:SWSU:OUK2:KRYJ:6F5R

Docker Root Dir: /var/lib/docker

Debug Mode: false

Registry: https://index.docker.io/v1/

Labels:

Experimental: false

Insecure Registries:

127.0.0.0/8

Live Restore Enabled: false

WARNING: bridge-nf-call-iptables is disabled

WARNING: bridge-nf-call-ip6tables is disabled

[root@CentOS7 ~]#

126,第一百二十六个命令docker pull tomcat 拉取镜像

[root@CentOS7 ~]# docker pull tomcat —拉取的镜像是公有云的,如果私有云的镜像需要配置

Using default tag: latest

latest: Pulling from library/tomcat

ce18cd0ba11c: Pull complete

8f138a340a23: Pull complete

f34c030205cc: Pull complete

1d7a1cfcc207: Pull complete

b5ad2e26f243: Pull complete

aa4190b07fff: Pull complete

21dfecab53ca: Downloading

4e5f7acd2f18: Download complete

7f05573df769: Download complete

unauthorized: authentication required

127,第一百二十七个命令docker images -q只显示镜像ID

[root@CentOS7 ~]# docker images -q

0a53296fd286

2d25c92337fc

查看镜像命令:

docker images

128,第一百二十八个命令docker **cp拷贝文件-**容器时间和宿主机同步

[root@CentOS7 ~]# docker cp 文件名 0a53296fd286:/home

[root@CentOS7 ~]#

以下这个命令是用来拷贝宿主机时间文件的,保证docker的时间一致性。

docker cp /etc/localtime 【容器ID或者NAME】:/etc/localtime

报错信息“Error response from daemon: Error processing tar file(exit status 1): invalid symlink “/etc/localtime” -> “…/usr/share/zoneinfo/Asia/Shanghai”

如果报错执行以下命令:

docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID或容器名:/usr/share/zoneinfo/Asia

然后重启容器即可

129,第一百二十九个命令Docker **save导出镜像命令:**

Docker save -o wm.tar 镜像名字

如何批量将镜像导出

Docker images | grep -v REPOSITORY | awk ‘BEGIN{OFS=”:”;ORS=” ”}{print $1,$2}’ >> images.txt

这个命令是将目前的镜像信息倒入一个文件中,方便以下操作。

For i in cat images.txt;do docker save -o echo $RANDOM.tar $i ;done;

上边这个命令是将镜像导出,并命名为一个随机数字。

echo $RANDOM这个参数就是创建一个随机数。

130,第一百三十个命令docker load倒入镜像**:**

docker load < /home/save.tar 倒入你已经拷贝过来的镜像

131,第一百三十一个命令:digests****显示镜像摘要信息

[root@CentOS7 ~]# docker images --digests

REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE

httpd latest sha256:1d71eef54c08435c0be99877c408637f03112dc9f929fba3cccdd15896099b02 0a53296fd286 4 days ago 136MB

nginx latest sha256:097c3a0913d7e3a5b01b6c685a60c03632fc7a2b50bc8e35bcaa3691d788226e 2d25c92337fc 5 days ago 134MB

[root@CentOS7 ~]#

132,第一百三十二个命令:docker pull -a 下载所有镜像

下载仓库所有Redis镜像:docker pull -a redis

[root@CentOS7 ~]# docker pull -a redis

[root@CentOS7 ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

httpd latest 0a53296fd286 4 days ago 136MB

nginx latest 2d25c92337fc 5 days ago 134MB

redis 2-32bit 19865a7ae96c 5 years ago 203MB

redis 2.8-32bit 19865a7ae96c 5 years ago 203MB

redis 2 481995377a04 5 years ago 186MB

redis 2.8 481995377a04 5 years ago 186MB

redis 2.6-32bit 62b0a5c3ea45 5 years ago 158MB

redis 2.6.17-32bit 62b0a5c3ea45 5 years ago 158MB

redis 2.6 a081f7d44c38 5 years ago 150MB

redis 2.6.17 a081f7d44c38 5 years ago 150MB

redis 2.8.16 8b6103fd7b3e 7 years ago 111MB

redis 2.8.15 dbb560009c50 7 years ago 111MB

redis 2.8.14 4aad650df84a 7 years ago 111MB

redis 2.8.13 c4f8a05f3aff 7 years ago 111MB

redis 2.8.12 98bc726ecd17 7 years ago 111MB

redis 2.8.11 2fb854cb3f76 7 years ago 111MB

redis 2.8.10 33fe9dbeb30c 7 years ago 111MB

[root@CentOS7 ~]#

133,第一百三十三个命令registry私有仓库搭建

第一步:

docker搭建私有镜像仓库:执行以下命令:

docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest

第二步:修改以下配置文件

[root@node ~]# vim /etc/docker/daemon.json

{

“insecure-registries”: [“10.211.55.4:5000”]

}

最后重启docker服务即可

**134,第一百三十四个命令:**docker ps查看启动容器信息

[root@CentOS7 ~]# docker ps --查看实时运行的容器,加“-a”参数查看所有。

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

49d855f13c56 redis “docker-entrypoint.s…” About a minute ago Up About a minute 6379/tcp confident_bouman

[root@CentOS7 ~]#

**135,第一百三十五个命令:**docker top列出redis容器中运行进程

[root@CentOS7 ~]# docker top 49d855f13c56

UID PID PPID C STIME TTY TIME CMD

polkitd 2053 2033 0 01:20 ? 00:00:00 redis-server *:6379

[root@CentOS7 ~]#

136,第一百三十六个命令docker logs 查看容器日志命令

[root@CentOS7 ~]# docker logs 49d855f13c56

1:C 23 Nov 2021 06:20:29.935 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo

1:C 23 Nov 2021 06:20:29.935 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=1, just started

1:C 23 Nov 2021 06:20:29.935 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf

1:M 23 Nov 2021 06:20:29.935 * monotonic clock: POSIX clock_gettime

1:M 23 Nov 2021 06:20:29.936 * Running mode=standalone, port=6379.

1:M 23 Nov 2021 06:20:29.936 # Server initialized

1:M 23 Nov 2021 06:20:29.936 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add ‘vm.overcommit_memory = 1’ to /etc/sysctl.conf and then reboot or run the command ‘sysctl vm.overcommit_memory=1’ for this to take effect.

1:M 23 Nov 2021 06:20:29.936 * Ready to accept connections

[root@CentOS7 ~]# —参数:-f 跟踪日志输出,-t 显示时间。

137,第一百三十七个命令:docker 使用run方式在创建时进入****容器

docker run -it centos /bin/bash ##关闭容器并退出

[root@CentOS7 ~]# docker run -it nginx /bin/bash

root@e682b1144e1f:/# ls

bin boot dev docker-entrypoint.d docker-entrypoint.sh etc home lib media mnt opt proc root run sbin srv sys tmp usr var

root@e682b1144e1f:/#

138,第一百三十八个命令:使用exec进入docker内部,退出时不会关闭容器。

[root@CentOS7 ~]# docker exec -it 49d855f13c56 /bin/bash

root@49d855f13c56:/data# exit

exit

[root@CentOS7 ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

49d855f13c56 redis “docker-entrypoint.s…” 25 minutes ago Up 25 minutes 6379/tcp confident_bouman

[root@CentOS7 ~]#

139,第一百三十九个命令docker inspect获取容器的元信息

[root@CentOS7 ~]# docker inspect 49d855f13c56

[

{

​ “Id”: “aca4b31a5bd95875fa07c6c9a6792a4010eb7dd795fc9267712b1c7929bdd464”,

​ “Created”: “2021-12-03T07:27:57.271073945Z”,

​ “Path”: “/docker-entrypoint.sh”,

​ “Args”: [

​ “nginx”,

​ “-g”,

​ “daemon off;”

​ ],

​ “State”: {

​ “Status”: “running”,

​ “Running”: true,

​ “Paused”: false,

​ “Restarting”: false,

​ “OOMKilled”: false,

​ “Dead”: false,

​ “Pid”: 24831,

​ “ExitCode”: 0,

​ “Error”: “”,

​ “StartedAt”: “2021-12-03T07:27:57.563027983Z”,

​ “FinishedAt”: “0001-01-01T00:00:00Z”

​ },

​ “Image”: “sha256:63eb316dc556e75d3dc0d7e225407639cb1f85f7edaf396b42cba134fd795442”,

​ “ResolvConfPath”: “/var/lib/docker/containers/aca4b31a5bd95875fa07c6c9a6792a4010eb7dd795fc9267712b1c7929bdd464/resolv.conf”,

​ “HostnamePath”: “/var/lib/docker/containers/aca4b31a5bd95875fa07c6c9a6792a4010eb7dd795fc9267712b1c7929bdd464/hostname”,

​ “HostsPath”: “/var/lib/docker/containers/aca4b31a5bd95875fa07c6c9a6792a4010eb7dd795fc9267712b1c7929bdd464/hosts”,

​ “LogPath”: “”,

​ “Name”: “/hopeful_montalcini”,

​ “RestartCount”: 0,

​ “Driver”: “overlay2”,

​ “MountLabel”: “system_u:object_r:svirt_sandbox_file_t:s0:c22,c951”,

​ “ProcessLabel”: “system_u:system_r:svirt_lxc_net_t:s0:c22,c951”,

​ “AppArmorProfile”: “”,

​ “ExecIDs”: null,

​ “HostConfig”: {

​ “Binds”: null,

​ “ContainerIDFile”: “”,

​ “LogConfig”: {

​ “Type”: “journald”,

​ “Config”: {}

​ },

​ “NetworkMode”: “default”,

​ “PortBindings”: {},

​ “RestartPolicy”: {

​ “Name”: “no”,

​ “MaximumRetryCount”: 0

​ },

​ “AutoRemove”: false,

​ “VolumeDriver”: “”,

​ “VolumesFrom”: null,

​ “CapAdd”: null,

​ “CapDrop”: null,

​ “Dns”: [],

​ “DnsOptions”: [],

​ “DnsSearch”: [],

​ “ExtraHosts”: null,

​ “GroupAdd”: null,

​ “IpcMode”: “”,

​ “Cgroup”: “”,

​ “Links”: null,

​ “OomScoreAdj”: 0,

​ “PidMode”: “”,

​ “Privileged”: false,

​ “PublishAllPorts”: false,

​ “ReadonlyRootfs”: false,

​ “SecurityOpt”: null,

​ “UTSMode”: “”,

​ “UsernsMode”: “”,

​ “ShmSize”: 67108864,

​ “Runtime”: “docker-runc”,

​ “ConsoleSize”: [

​ 0,

​ 0

​ ],

​ “Isolation”: “”,

​ “CpuShares”: 0,

​ “Memory”: 0,

​ “NanoCpus”: 0,

​ “CgroupParent”: “”,

​ “BlkioWeight”: 0,

​ “BlkioWeightDevice”: null,

​ “BlkioDeviceReadBps”: null,

​ “BlkioDeviceWriteBps”: null,

​ “BlkioDeviceReadIOps”: null,

​ “BlkioDeviceWriteIOps”: null,

​ “CpuPeriod”: 0,

​ “CpuQuota”: 0,

​ “CpuRealtimePeriod”: 0,

​ “CpuRealtimeRuntime”: 0,

​ “CpusetCpus”: “”,

​ “CpusetMems”: “”,

​ “Devices”: [],

​ “DiskQuota”: 0,

​ “KernelMemory”: 0,

​ “MemoryReservation”: 0,

​ “MemorySwap”: 0,

​ “MemorySwappiness”: -1,

​ “OomKillDisable”: false,

​ “PidsLimit”: 0,

​ “Ulimits”: null,

​ “CpuCount”: 0,

​ “CpuPercent”: 0,

​ “IOMaximumIOps”: 0,

​ “IOMaximumBandwidth”: 0

​ },

​ “GraphDriver”: {

​ “Name”: “overlay2”,

​ “Data”: {

​ “LowerDir”: “/var/lib/docker/overlay2/41a3d3f278406cf83b6c3fcb71d63f74222209a7910d3ff425f180f8349f7bb2-init/diff:/var/lib/docker/overlay2/891c567f3915a7cd4053707e3b503923ee3e24068aeb0493a872fc7dbe105ce0/diff:/var/lib/docker/overlay2/0b4f14f6057a696383cff30b9fdbf66273b6de2beea1e18427aa167a8ffe5954/diff:/var/lib/docker/overlay2/77f75a787d9fe0394b6dca24ef7a0891ea24b9531c7a66a13b29bcf60a945afa/diff:/var/lib/docker/overlay2/e5a049f5db7cd31a09719ab286a5bf5a212ca556fb24897171bf8586f90af24e/diff:/var/lib/docker/overlay2/2c83911e60c6dac00189e53a2eabba1f8ffb1d4bc84962c94a5a3c66380c8a3a/diff:/var/lib/docker/overlay2/c7f0e6357fd629cfb5fd519630f8d9e23de562c48519c83e915682d0a7ca0adb/diff”,

​ “MergedDir”: “/var/lib/docker/overlay2/41a3d3f278406cf83b6c3fcb71d63f74222209a7910d3ff425f180f8349f7bb2/merged”,

​ “UpperDir”: “/var/lib/docker/overlay2/41a3d3f278406cf83b6c3fcb71d63f74222209a7910d3ff425f180f8349f7bb2/diff”,

​ “WorkDir”: “/var/lib/docker/overlay2/41a3d3f278406cf83b6c3fcb71d63f74222209a7910d3ff425f180f8349f7bb2/work”

​ }

​ },

​ “Mounts”: [],

​ “Config”: {

​ “Hostname”: “aca4b31a5bd9”,

​ “Domainname”: “”,

​ “User”: “”,

​ “AttachStdin”: false,

​ “AttachStdout”: false,

​ “AttachStderr”: false,

​ “ExposedPorts”: {

​ “80/tcp”: {}

​ },

​ “Tty”: false,

​ “OpenStdin”: false,

​ “StdinOnce”: false,

​ “Env”: [

​ “PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”,

​ “NGINX_VERSION=1.21.4”,

​ “NJS_VERSION=0.7.0”,

​ “PKG_RELEASE=1~bullseye”

​ ],

​ “Cmd”: [

​ “nginx”,

​ “-g”,

​ “daemon off;”

​ ],

​ “Image”: “63eb316dc556”,

​ “Volumes”: null,

​ “WorkingDir”: “”,

​ “Entrypoint”: [

​ “/docker-entrypoint.sh”

​ ],

​ “OnBuild”: null,

​ “Labels”: {

​ “maintainer”: “NGINX Docker Maintainers docker-maint@nginx.com

​ },

​ “StopSignal”: “SIGQUIT”

​ },

​ “NetworkSettings”: {

​ “Bridge”: “”,

​ “SandboxID”: “e464ab5fc386a47da939c2590b70a1380245bb50deaf96eb0edc18b7181d1d5a”,

​ “HairpinMode”: false,

​ “LinkLocalIPv6Address”: “”,

​ “LinkLocalIPv6PrefixLen”: 0,

​ “Ports”: {

​ “80/tcp”: null

​ },

​ “SandboxKey”: “/var/run/docker/netns/e464ab5fc386”,

​ “SecondaryIPAddresses”: null,

​ “SecondaryIPv6Addresses”: null,

​ “EndpointID”: “f74e02e80971b1a8c1e7f63d4e6e0696a627dfb2f4a05386005a451fa4f918ef”,

​ “Gateway”: “172.17.0.1”,

​ “GlobalIPv6Address”: “”,

​ “GlobalIPv6PrefixLen”: 0,

​ “IPAddress”: “172.17.0.2”,

​ “IPPrefixLen”: 16,

​ “IPv6Gateway”: “”,

​ “MacAddress”: “02:42:ac:11:00:02”,

​ “Networks”: {

​ “bridge”: {

​ “IPAMConfig”: null,

​ “Links”: null,

​ “Aliases”: null,

​ “NetworkID”: “bb2d40d59647d41a87cbb7f643bfcde525b9204966e1cb2a877ae97ba5e3d88b”,

​ “EndpointID”: “f74e02e80971b1a8c1e7f63d4e6e0696a627dfb2f4a05386005a451fa4f918ef”,

​ “Gateway”: “172.17.0.1”,

​ “IPAddress”: “172.17.0.2”,

​ “IPPrefixLen”: 16,

​ “IPv6Gateway”: “”,

​ “GlobalIPv6Address”: “”,

​ “GlobalIPv6PrefixLen”: 0,

​ “MacAddress”: “02:42:ac:11:00:02”

​ }

​ }

​ }

}

]

[root@localhost mnt]#

**140,第一百四十个命令/bin/echo 不进入容器内,**只是echo个信息

单纯测试

[root@CentOS7 ~]# docker run busybox /bin/echo Hello Docker

Unable to find image ‘busybox:latest’ locally

latest: Pulling from library/busybox

00fa7918e1c4: Pull complete

Digest: sha256:e7157b6d7ebbe2cce5eaa8cfe8aa4fa82d173999b9f90a9ec42e57323546c353

Status: Downloaded newer image for busybox:latest

Hello Docker

[root@CentOS7 ~]#

查看时间

[root@master ~]# docker exec -it 26ee855efe35 bash -c date

Thu Dec 30 10:50:46 UTC 2021

[root@master ~]#

141,第一百四十一个命令docker history redis查看镜像的版本历史

[root@CentOS7 ~]# docker history redis

IMAGE CREATED CREATED BY SIZE COMMENT

1723fecac739 5 days ago /bin/sh -c #(nop) CMD [“redis-server”] 0B

5 days ago /bin/sh -c #(nop) EXPOSE 6379 0B

5 days ago /bin/sh -c #(nop) ENTRYPOINT ["docker-entry… 0B

5 days ago /bin/sh -c #(nop) COPY file:df205a0ef6e6df89… 374B

5 days ago /bin/sh -c #(nop) WORKDIR /data 0B

5 days ago /bin/sh -c #(nop) VOLUME [/data] 0B

5 days ago /bin/sh -c mkdir /data && chown redis:redis … 0B

5 days ago /bin/sh -c set -eux; savedAptMark="$(apt-m… 28.3MB

5 days ago /bin/sh -c #(nop) ENV REDIS_DOWNLOAD_SHA=5b… 0B

5 days ago /bin/sh -c #(nop) ENV REDIS_DOWNLOAD_URL=ht… 0B

5 days ago /bin/sh -c #(nop) ENV REDIS_VERSION=6.2.6 0B

5 days ago /bin/sh -c set -eux; savedAptMark="$(apt-ma… 4.32MB

5 days ago /bin/sh -c #(nop) ENV GOSU_VERSION=1.12 0B

5 days ago /bin/sh -c groupadd -r -g 999 redis && usera… 331kB

6 days ago /bin/sh -c #(nop) CMD [“bash”] 0B

6 days ago /bin/sh -c #(nop) ADD file:4203242b2b09a6523… 74.3MB

[root@CentOS7 ~]#

142,第一百四十二个命令搭建私有仓库后配置上传镜像方法

编辑这个文件:/etc/docker/daemon.json

{

“registry-mirror”: [

“https://registry.docker-cn.com”

],

“insecure-registries”: [

“[私有仓库 ip:port]”

]

}

然后在命令行执行以下命令:

[root@CentOS7 ~]# systemctl restart docker

[root@CentOS7 ~]# docker login —这一步根据实际情况操作。

Login with your Docker ID to push and pull images from Docker Hub. If you don’t have a Docker ID, head over to https://hub.docker.com to create one.

Username:

下面是上传镜像操作:

**143,第一百四十三个命令:**docker tag 给镜像打标签

[root@CentOS7 ~]# docker images

imagesREPOSITORY TAG IMAGE ID CREATED SIZE

httpd latest 0a53296fd286 4 days ago 136MB

nginx latest 2d25c92337fc 5 days ago 134MB

redis latest 1723fecac739 5 days ago 107MB

busybox latest 55d288799e59 11 days ago 1.41MB

redis 2-32bit 19865a7ae96c 5 years ago 203MB

redis 2.8-32bit 19865a7ae96c 5 years ago 203MB

redis 2 481995377a04 5 years ago 186MB

redis 2.8 481995377a04 5 years ago 186MB

redis 2.6-32bit 62b0a5c3ea45 5 years ago 158MB

redis 2.6.17-32bit 62b0a5c3ea45 5 years ago 158MB

redis 2.6 a081f7d44c38 5 years ago 150MB

redis 2.6.17 a081f7d44c38 5 years ago 150MB

redis 2.8.16 8b6103fd7b3e 7 years ago 111MB

redis 2.8.15 dbb560009c50 7 years ago 111MB

redis 2.8.14 4aad650df84a 7 years ago 111MB

redis 2.8.13 c4f8a05f3aff 7 years ago 111MB

redis 2.8.12 98bc726ecd17 7 years ago 111MB

redis 2.8.11 2fb854cb3f76 7 years ago 111MB

redis 2.8.10 33fe9dbeb30c 7 years ago 111MB

[root@CentOS7 ~]# docker tag httpd:latest registry:latest

[root@CentOS7 ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

httpd latest 0a53296fd286 4 days ago 136MB

registry latest 0a53296fd286 4 days ago 136MB

nginx latest 2d25c92337fc 5 days ago 134MB

redis latest 1723fecac739 5 days ago 107MB

busybox latest 55d288799e59 11 days ago 1.41MB

redis 2-32bit 19865a7ae96c 5 years ago 203MB

redis 2.8-32bit 19865a7ae96c 5 years ago 203MB

redis 2 481995377a04 5 years ago 186MB

redis 2.8 481995377a04 5 years ago 186MB

redis 2.6-32bit 62b0a5c3ea45 5 years ago 158MB

redis 2.6.17-32bit 62b0a5c3ea45 5 years ago 158MB

redis 2.6 a081f7d44c38 5 years ago 150MB

redis 2.6.17 a081f7d44c38 5 years ago 150MB

redis 2.8.16 8b6103fd7b3e 7 years ago 111MB

redis 2.8.15 dbb560009c50 7 years ago 111MB

redis 2.8.14 4aad650df84a 7 years ago 111MB

redis 2.8.13 c4f8a05f3aff 7 years ago 111MB

redis 2.8.12 98bc726ecd17 7 years ago 111MB

redis 2.8.11 2fb854cb3f76 7 years ago 111MB

redis 2.8.10 33fe9dbeb30c 7 years ago 111MB

[root@CentOS7 ~]# docker push registry:latest —执行后即可上传。

**144,第一百四十四个命令:**取正在运行的容器的 IP

[root@CentOS7 ~]# docker inspect --format=‘{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ e682b1144e1f

172.17.0.2

[root@CentOS7 ~]# —命令的以后的参数是容器id。

145,第一百四十五个命令docker rm删除所有容器**–除了在运行的以外。**

[root@CentOS7 ~]# docker rm docker ps -a -q

9c1d2f244882

49d855f13c56

Error response from daemon: You cannot remove a running container e682b1144e1fcd99482d7cccdd11ce225f77d0c11edd6c4a0d258eb7c5caace9. Stop the container before attempting removal or force remove

[root@CentOS7 ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

e682b1144e1f nginx “/docker-entrypoint.…” 47 minutes ago Up 8 minutes 80/tcp sharp_montalcini

[root@CentOS7 ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

e682b1144e1f nginx “/docker-entrypoint.…” 47 minutes ago Up 9 minutes 80/tcp sharp_montalcini

[root@CentOS7 ~]#

**146,第一百四十六个命令:**docker强制删除容器

有时候容器stop不了,需要强制删除

docker rm -f 容器id

删除后如果显示(endpoint with name xxx already exists in network bridge/host)尝试以下命令;

docker network disconnect --force bridge/host 容器id

docker network inspect bridge/host

**147,第一百四十七个命令:**停止、启动、杀死一个容器

[root@CentOS7 ~]#docker stop 容器id

[root@CentOS7 ~]#docker start 容器id

[root@CentOS7 ~]#docker kill 容器id

**148,第一百四十八个命令:**stats 显示容器使用的系统资源

不带任何选项执行 docker stats 命令

[root@CentOS7 ~]# docker stats e682b1144e1f --进入视图,实时观看

[root@CentOS7 ~]# docker stats --no-stream e682b1144e1f —返回结果查看

CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS

e682b1144e1f sharp_montalcini 0.00% 736KiB / 1.425GiB 0.05% 1.38kB / 0B 0B / 0B 1

[root@CentOS7 ~]#

查看正在运行的容器的资源信息

[root@CentOS7 ~]# docker ps -s

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE

823be07b7bbe httpd:latest “httpd-foreground” 2 minutes ago Up 2 minutes 80/tcp pensive_haibt 2B (virtual 136MB)

e682b1144e1f nginx “/docker-entrypoint.…” About an hour ago Up 35 minutes 80/tcp sharp_montalcini 18B (virtual 134MB)

[root@CentOS7 ~]#

149,第一百四十九个命令查看容器的占用资源信息

[root@CentOS7 ~]# docker system df -v —也可以不加“-V”参数。

Images space usage:

REPOSITORY TAG IMAGE ID CREATED SIZE SHARED SIZE UNIQUE SIZE CONTAINERS

httpd latest 0a53296fd286 4 days ago 136.4MB 74.34MB 62.01MB 2

nginx latest 2d25c92337fc 5 days ago 134.5MB 74.34MB 60.13MB 1

redis latest 1723fecac739 5 days ago 107.3MB 74.34MB 32.92MB 0

busybox latest 55d288799e59 11 days ago 1.412MB 0B 1.412MB 0

redis 2-32bit 19865a7ae96c 5 years ago 203MB 169MB 34.05MB 1

redis 2 481995377a04 5 years ago 186.3MB 169MB 17.36MB 0

redis 2.6-32bit 62b0a5c3ea45 5 years ago 158.2MB 125.4MB 32.72MB 0

redis 2.6 a081f7d44c38 5 years ago 150.2MB 125.4MB 24.76MB 0

redis 2.8.16 8b6103fd7b3e 7 years ago 110.7MB 101.7MB 9.017MB 0

redis 2.8.15 dbb560009c50 7 years ago 110.7MB 101.7MB 9.016MB 0

redis 2.8.14 4aad650df84a 7 years ago 110.7MB 101.7MB 9.012MB 0

redis 2.8.13 c4f8a05f3aff 7 years ago 110.7MB 101.7MB 9.014MB 0

redis 2.8.12 98bc726ecd17 7 years ago 110.6MB 101.7MB 8.951MB 0

redis 2.8.11 2fb854cb3f76 7 years ago 110.8MB 101.7MB 9.087MB 0

redis 2.8.10 33fe9dbeb30c 7 years ago 110.8MB 101.7MB 9.087MB 0

Containers space usage:

CONTAINER ID IMAGE COMMAND LOCAL VOLUMES SIZE CREATED STATUS NAMES

823be07b7bbe httpd:latest “httpd-foreground” 0 2B 18 minutes ago Up 18 minutes pensive_haibt

721be3697f03 httpd “0a53296fd286” 0 0B 19 minutes ago Created upbeat_satoshi

9f120be3894d 19865a7ae96c “docker-entrypoint.s…” 1 0B 19 minutes ago Exited (1) 19 minutes ago interesting_austin

e682b1144e1f nginx “/docker-entrypoint.…” 0 18B About an hour ago Up 50 minutes sharp_montalcini

Local Volumes space usage:

VOLUME NAME LINKS SIZE

468941d32d2f51ae0090c186ab22db5c5c9cd0139138636bef5ecb32b12542a7 0 92B -------此处显示的是容器的大小

97121f3f27ad9446508588fc40f21dfedb8707fe0ef982501d3948ece440d2b5 1 0B

Build cache usage: 0B

CACHE ID CACHE TYPE SIZE CREATED LAST USED USAGE SHARED

[root@CentOS7 ~]#

**150,第一百五十个命令:**在执行docker run时参数信息

-m,–memory 内存限制,最小为 4M

–memory-swap 内存+交换分区大小总限制。格式同上。必须必-m设置的大

–memory-reservation 内存的软性限制。格式同上

–oom-kill-disable 是否阻止 OOM killer 杀死容器,默认没设置。

–oom-score-adj 容器被 OOM killer 杀死的优先级,范围是[-1000, 1000],默认为 0

–memory-swappiness 用于设置容器的虚拟内存控制行为。值为 0~100 之间的整数

–kernel-memory 核心内存限制。格式同上,最小为 4M

151,第一百五十一个命令dockerfile的使用和在容器内安装软件

Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。

docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。

例:

docker build -f /path/to/a/Dockerfile .

# This my first nginx Dockerfile

# Version 1.0

# Base images 基础镜像

FROM centos

#ENV 设置环境变量

ENV PATH /usr/local/nginx/sbin:$PATH

#ADD 文件放在当前目录下,拷过去会自动解压

ADD nginx-1.8.0.tar.gz /usr/local/

ADD epel-release-latest-7.noarch.rpm /usr/local/

#RUN 执行以下命令

RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm

RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all

#WORKDIR 相当于cd

WORKDIR /usr/local/nginx-1.8.0

RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install

RUN echo “daemon off;” >> /etc/nginx.conf

#EXPOSE 开启端口

EXPOSE 80

#CMD 容器启动后,运行以下命令

CMD [“nginx”]

*容器内部安装软件**:*

一般情况下进入容器后,有些命令没有。需要执行某个命令时,我们要进行安装,上边的dockerfile是在镜像基础上安装。下面讲解下,在容器运行时,容器内部直接安装方法:

1,进入容器:

root@26ee855efe35:/# *apt*

apt 2.2.4 (arm64)

Usage: apt [options] command

apt is a commandline package manager and provides commands for

searching and managing as well as querying information about packages.

It provides the same functionality as the specialized APT tools,

like apt-get and apt-cache, but enables options more suitable for

interactive use by default.

Most used commands:

list - list packages based on package names

search - search in package descriptions

show - show package details

install - install packages

reinstall - reinstall packages

remove - remove packages

autoremove - Remove automatically all unused packages

update - update list of available packages

upgrade - upgrade the system by installing/upgrading packages

full-upgrade - upgrade the system by removing/installing/upgrading packages

edit-sources - edit the source information file

satisfy - satisfy dependency strings

See apt(8) for more information about the available commands.

Configuration options and syntax is detailed in apt.conf(5).

Information about how to configure sources can be found in sources.list(5).

Package and version choices can be expressed via apt_preferences(5).

Security details are available in apt-secure(8).

​ This APT has Super Cow Powers.

root@26ee855efe35:/#

大多数的容器,都自带这个apt命令。直接执行会看到相关的使用文档。

如果没有这个命令,可能需要使用dockerfile来安装了。

*2,**更新apt数据**:*

root@26ee855efe35:/# apt update

Hit:1 http://deb.debian.org/debian bullseye InRelease

Get:2 http://security.debian.org/debian-security bullseye-security InRelease [44.1 kB]

Get:3 http://deb.debian.org/debian bullseye-updates InRelease [39.4 kB]

Get:4 http://deb.debian.org/debian bullseye-updates/main arm64 Packages [2600 B]

Get:5 http://security.debian.org/debian-security bullseye-security/main arm64 Packages [100 kB]

Fetched 142 kB in 1s (128 kB/s)

Reading package lists… Done

Building dependency tree… Done

Reading state information… Done

All packages are up to date.

root@26ee855efe35:/#

*3,**安装你所需要的软件包*

root@26ee855efe35:/# apt install vim

Reading package lists… Done

Building dependency tree… Done

Reading state information… Done

The following additional packages will be installed:

libgpm2 vim-common vim-runtime xxd

Suggested packages:

gpm ctags vim-doc vim-scripts

The following NEW packages will be installed:

libgpm2 vim vim-common vim-runtime xxd

0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.

Need to get 8067 kB of archives.

After this operation, 37.0 MB of additional disk space will be used.

Do you want to continue? [Y/n] y

。。。。。—信息过多忽略处理

root@26ee855efe35:/#

总结:1,不是所有包都能安装,大部分常用的都可以。2,以上命令执行中,需要依赖网络环境。3,如果执行命令报错,第一时间看看容器的时间和宿主机的是否一致。

152,第一百五十二个命令容器的网络ip地址网段更改

docker的网络模式:

Bridge contauner

默认值,在Docker网桥docker0上为容器创建新的网络栈

Host(open) container :

容器和宿主机共享Network namespace

Container(join) container :

容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace

None(Close) container:

无模式

修改docker的网段方法如下:

Vim /etc/docker/daemon.json

{

“bip”:“10.55.0.1/16”

}

**153,第一百五十三个命令:**创建一个容器命名为 test 使用镜像daocloud.io/library/ubuntu

[root@localhost mnt]# docker create -it --name test daocloud.io/library/ubuntu

Unable to find image ‘daocloud.io/library/ubuntu:latest’ locally

Trying to pull repository daocloud.io/library/ubuntu …

latest: Pulling from daocloud.io/library/ubuntu

a70d879fa598: Pull complete

c4394a92d1f8: Pull complete

10e6159c56c0: Pull complete

Digest: sha256:5403064f94b617f7975a19ba4d1a1299fd584397f6ee4393d0e16744ed11aab1

Status: Downloaded newer image for daocloud.io/library/ubuntu:latest

d292cbc12a29e71686702cf3b9222479c8cb76b13b21f56fa75a8ed5f5f09a57

[root@localhost mnt]#

154,第一百五十四个命令docker启动参数

[root@localhost mnt]# docker run -d 63eb316dc556 --restart=always

82c73fe0be9a955d8d74774cceba6c107c903a02aa0320767518b99c0ece082c

[root@localhost mnt]#

以上命令是–restart=always 容器随系统自启

no – 默认值,如果容器挂掉不自动重启

on-failure – 当容器以非 0 码退出时重启容器,同时可接受一个可选的最大重启次数参数 (e.g. on-failure:10).

always – 不管退出码是多少都要重启

限制内存最大使用 -m 1024m --memory-swap=1024m

限制容器使用CPU --cpuset-cpus=“0,1”

**155,第一百五十五个命令:**删除所有运行的容器

[root@localhost mnt]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

f53f26cd8d2b 63eb316dc556 “/docker-entrypoin…” 3 minutes ago Up 3 minutes 80/tcp priceless_leavitt

aca4b31a5bd9 63eb316dc556 “/docker-entrypoin…” 10 minutes ago Up 10 minutes 80/tcp hopeful_montalcini

[root@localhost mnt]# docker kill -s KILL docker ps -q

f53f26cd8d2b

aca4b31a5bd9

[root@localhost mnt]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

[root@localhost mnt]#

附加****1,查看私有仓库镜像信息

-registry:2.5版本以上可以删除已有镜像

1)查看私有仓库执行此命令:

curl -XGET http://ip:端口/v2/_catalog

2)获取某个镜像的标签列表:

curl -XGEThttp://192.168.1.8:5000/v2/私有仓库镜像名称/tags/list

**附加****2,commit针对镜像进行修改后,**构建新的镜像

Commit: 构建新镜像

[root@master ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

docker.io/nginx latest fc16ec0c2d91 Less than a second ago 134 MB

[root@master ~]# docker run -it fc16ec0c2d91 /bin/sh

# touch wm.txt

# ls

bin dev docker-entrypoint.sh home media opt root sbin sys usr wm.txt

boot docker-entrypoint.d etc lib mnt proc run srv tmp var

# exit

[root@master ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

[root@master ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

08fffc212d34 fc16ec0c2d91 “/docker-entrypoin…” 34 seconds ago Exited (0) 5 seconds ago eloquent_brattain

[root@master ~]# docker commit -a “asad” -m “asdas” 08fffc212d34 nginx:wm

sha256:eb66102581466b052bdce7b8916109236a0f8b4cf9a839c8a29722497347b863

[root@master ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

docker.io/nginx latest fc16ec0c2d91 Less than a second ago 134 MB

nginx wm eb6610258146 3 seconds ago 134 MB

[root@master ~]# docker run -it nginx:wm /bin/sh

# ls

bin dev docker-entrypoint.sh home media opt root sbin sys usr wm.txt

boot docker-entrypoint.d etc lib mnt proc run srv tmp var

#

以上就是构建一个新镜像步骤,也可以在构建新镜像是,配合docker cp使用,将某些文件拷贝到容器中,在构建成新镜像。

附加****3,删除宿主机的镜像文件优化磁盘水位

Docker rmi -f $(docker images -qa)

“除了”正在运行的镜像,其他的删除。

k8s的基础命令篇

**156,第一百五十六个命令:**显示所有的pod的信息

[root@master~]# Kubectl get pod -A

**157,第一百五十七个命令:**显示所有的pod的详细信息

[root@master~]Kubectl get pod -A -o wide

**158,第一百五十八个命令:**显示集群的node节点信息

[root@master~]Kubectl get node

**159,一百五十九个命令:**显示集群的节点的详细信息

[root@master~]Kubectl get node -o wide

160,第一百六十个命令查看k8****s版本

[root@master~]Kubectl version

**161,第一百六十一个命令:**查看命名空间信息

[root@master~]Kubectl get ns

**162,第一百六十二个命令:**创建命令空间

[root@master~]kubectl create namespace web

**163,第一百六十三个命令:**删除命名空间

[root@master~]kubectl delete namespace web

**164,第一百六十四个命令:**查看集群的组件健康状态

[root@master~]Kubectl get cs

165,第一百六十五个命令 查看pod的详细信息

[root@master~]Kubectl describe pod

(pod名字) -n (命名空间)

例:

Kubectl describe pod kube-scheduler-master-test -n kube-system

查看 kube-scheduler-master-test pod的运行详细信息,指定命名空间为kube-system

**166,第一百六十六个命令:**这个命令是查看pod的yaml文件

[root@master~]Kubectl get pod kube-scheduler-master-test -n kube-system -o yaml

**167,第一百六十七个命令:**修改pod的yaml文件

[root@master~]Kubectl edit pod kube-scheduler-master-test -n kube-system -o yaml

这个命令是直接修改这个pod的信息,更改后保存退出直接生效。

**168,第一百六十八个命令:**这个命令是查看pod的日志信息

[root@master~]Kubectl logs kube-scheduler-master-test -n kube-system

添加“-f”参数是实时查看

**169,第一百六十九个命令:**查看configmap配置文件信息

[root@master~]Kubectl get configmap -A

**170,第一百七十个命令:**这个命令查看所有的svc信息

[root@master~]Kubectl get svc -A

如果修改svc的模式,请使用以下命令:

Kubectl edit svc svc名字 -n 命令空间 -o yaml

例:

kubectl edit svc alertmanager-main -n kubesphere-monitoring-system -o yaml

**171,第一百七十一个命令:**查看持久化存储信息

[root@master~]Kubectl get pv,pvc -A

172,第一百七十二个命令运行Pod的yaml文件创建wm.yaml****的容器

[root@master~]kubectl apply -f wm.yaml

173,第一百七十三个命令进入pod容器命令:

Kubectl exec -it pod名字 -n 命名空间 bash

例:

[root@master~]kubectl exec -it wm -n web bash

174,第一百七十四个命令删除pod

[root@master~]kubectl delete -f wm.yaml #根据yaml文件删除

[root@master~]kubectl delete -n web pod/tomcat。 #根据pod——name删除

**175,第一百七十五个命令:**查看节点标签

[root@master~]kubectl get node --show-labels

**176,第一百七十六个命令:**为节点打标签

[root@master~]kubectl label node docker-desktop component=tomcat

**177,第一百七十七个命令:**查看所有daemonsets信息

[root@master~]kubectl get ds -A

**178,第一百七十八个命令:**查看所有statefulsets信息

[root@master~]kubectl get sts -A

**179,第一百七十九个命令:**查看所有jobs信息

[root@master~]kubectl get jobs -A

180,第一百八十个命令查看所有deployment****信息

[root@master~]kubectl get deployment -A

kubectl get deployment kubectl-admin -n kubesphere-controls-system -o yaml

查看deployment的详细信息

**181,第一百八十一个命令:**查看svc代理的pod ip地址信息

[root@master~]Kubectl get ep -A

**182,第一百八十二个命令:**动态扩容

[root@master~]kubectl edit replicaset/deployment myapp

修改replicas: 的值即可

**183,第一百八十三个命令:**动态升级

[root@master~]kubectl edit replicaset/deployment myapp

kubectl edit 控制器类型 控制器名

修改- image:ikubernetes/myapp:v2即可

查询版本验证

[root@master~]kubectl get rs/deployment -o wide —这个命令可以查看目前运行的pod的镜像版本信息,就是控制器的yaml文件中的镜像版本信息

**184,第一百八十四个命令:**回滚上一次的操作

[root@master~]kubectl rollout undo deployment.v1.apps/nginx-deployment

**185,第一百八十五个命令:**回滚到某一特定的版本

kubectl rollout undo deployment.v1.apps/nginx-deployment --to-revision=2

**186,第一百八十六个命令:**为指定节点添加标签

[root@master~]kubectl label nodes k8s-node zone=wm

**187,第一百八十七个命令:**为指定节点删除标签

[root@master~]kubectl label nodes k8s-node zone-

**188,第一百八十八个命令:**动态伸缩

[root@master~]kubectl scale deploy myapp-deployment --replicas=5

[root@master~]kubectl scale --replicas=8 -f myapp-deployment-v2.yaml

**189,第一百八十九个命令:**创建资源

[root@master~]kubectl create -f wm.yaml

**190,第一百九十个命令:**删除资源

[root@master~]kubectl delete -f xxx.yaml

**191,第一百九十一个命令:**查看node节点资源信息

[root@master~]kubectl top node

以上这个命令对版本有依赖,高版本不适用

**192,第一百九十二个命令:**查看pod资源使用信息

[root@master~]kubectl top pod名字 -n namespaces

以上这个命令对版本有依赖,高版本不适用

**193,第一百九十三个命令:**设置不可调度节点

[root@master~]# kubectl get node

NAME STATUS ROLES AGE VERSION

master-test Ready master,worker 16d v1.17.9

node-test1 Ready worker 16d v1.17.9

[root@master~]# kubectl cordon node-test1

node/node-test1 cordoned

[root@master~]# kubectl get node

NAME STATUS ROLES AGE VERSION

master-test Ready master,worker 16d v1.17.9

node-test1 Ready,SchedulingDisabled worker 16d v1.17.9

[root@master~]#

**194,第一百九十四个命令:**取消不可调度节点

[root@master~]kubectl uncordon node-test1

**195,第一百九十五个命令:**驱逐节点上的pod

[root@master~]kubectl drain node-test1

**196,第一百九十六个命令:**查看pods所有标签

[root@master~]kubectl get pods --show-labels

**197,第一百九十七个命令:**滚动更新镜像

[root@master~]kubectl set image deployment/nginx-deployment nginx=nginx:1.11

**198,第一百九十八个命令:**实时观察发布状态

[root@master~]kubectl rollout status deployment/nginx-deployment

**199,第一百九十九个命令:**设置启动扩容/缩容

[root@master~]kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80

**200,第二百个命令:**查看集群接口和dns的一些信息

[root@master~]kubectl cluster-info

**附加命令****1,**清除schedulingdisabled状态

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

kubectl get node --show-labels

kubectl patch node node1 -p’{“spec”:{“unschedulable”:false}}’

kubectl patch node node2 -p’{“spec”:{“unschedulable”:false}}’

**附加命令****2,**Kubernetes集群中移除Node

在master节点上执行:

kubectl drain master --delete-local-data --force --ignore-daemonsets

kubectl drain node1 --delete-local-data --force --ignore-daemonsets

kubectl drain node2 --delete-local-data --force --ignore-daemonsets

kubectl delete node master

kubectl delete node node1

kubectl delete node node2

在所有节点执行:

kubeadm reset

iptables -nvL

iptables -X

iptables -F

systemctl restart docker

**附加命令****3,**添加节点

添加节点

生成token

一般来说在k8s集群初始化完成的时候,会输出一条token来让我们添加其他的节点,但是这个token的有效时间只有24小时。我们可以这样查询token。

# 查询token

kubeadm token list

# 创建一个token

kubeadm token create

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里我们可以看到ttl值就是这个token对应的有效时间了

生成sha256加密字符串

除了token之外,我们还需要一个sha256的加密字符串,这个我们可以这样获得

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed ‘s/^.* //’

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来我们就可以把node节点添加到集群中了

命令的格式如下:

kubeadm join <集群master节点IP:端口> --token --discovery-token-ca-cert-hash sha256:

对应到小七这里的操作命令如下:

kubeadm join kubernetes.haproxy.com:8443 --token d98xt5.6xvz7nldv2niknnv \

–discovery-token-ca-cert-hash sha256:ae8d99e389a6a3109c188b5c27792c490e6a18e438bb4fc81a0a44b9542f3835 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接着我们在master节点中就可以查看到新添加的这个节点了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

**附加命令****4,**查看所有资源信息

[root@master ~]# kubectl get all -A

系统漏洞修复篇**:**

如果你的系统是centos6或者ssh版本过低,在或者你的机器被安全软件扫描出来ssh提权漏洞的话,建议使用以下方法升级:

首先需要有两个软件包提前下载好:

1,openssl-1.02k

2,openssh-7.9p1

以上软件包可以在官网下载:http://www.openssh.com/ftp.html

下载好软件包后:

第一步**:下载安装openssl-1.02k**

安装openssl-1.02k

直接执行以下脚本即可,或者在命令行逐个执行以下命令。

#! /bin/bash

#yum is ok

cd /opt/

yum repolist > 2&

yum -y install gcc pam-devel zlib-devel

mv /usr/lib64/openssl /usr/lib64/openssl.old

mv /usr/bin/openssl /usr/bin/openssl.old

mv /etc/pki/ca-trust/extracted/openssl /etc/pki/ca-trust/extracted/openssl.old

cp /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.10.old

cp /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.10.old

for i in rpm -qa | grep openssl

do

​ echo “xiezai” rpm -e --nodeps $i

done

tar -zxvf openssl-*

cd openssl-*

./config --prefix=/usr --openssldir=/etc/ssl --shared zlib

make && make test && make install

mv /usr/lib64/libcrypto.so.10.old /usr/lib64/libcrypto.so.10

mv /usr/lib64/libssl.so.10.old /usr/lib64/libssl.so.10

openssl version -a

第二步**:下载安装openssh-7.9p1**

安装openssh-7.9p1

直接执行以下脚本即可,或者在命令行逐个执行以下命令。

#! /bin/bash

cd /opt/

tar -zxvf openssh*

cd openssh*

for i in rpm -qa | grep openssh

do

rpm -e --nodeps $i

done

install -v -m700 -d /var/lib/sshd

chown -v root:sys /var/lib/sshd

groupadd -g 50 sshd

useradd -c ‘sshd PrivSep’ -d /var/lib/sshd -g sshd -s /bin/false -u 50 sshd

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-openssl-includes=/usr --with-privsep-path=/var/lib/sshd

make

make install

install -v -m755 contrib/ssh-copy-id /usr/bin

install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1

install -v -m755 -d /usr/share/doc/openssh-7.9p1

install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.9p1

ssh -V

echo “PermitRootLogin yes” >> /etc/ssh/sshd_config

cp -p contrib/redhat/sshd.init /etc/init.d/sshd

chmod +x /etc/init.d/sshd

chkconfig --add sshd

chkconfig sshd on

chkconfig --list sshd

iptables -F

setenforce 0

总结**:centos的7****.9默认是****openssh-7.4p1**

以上就是ssh提权漏洞的修复过程,如果openssh-7.9p1也存在漏洞,可以参考本升级方法,升级更高的版本。

磁盘分区和lvm使用篇**:**

linux 根(/) 或其他分区扩容文档

第一步:检测linux系统是否可以在线扩容

  1. linux系统在安装时如果选择LVM(逻辑卷)安装的话可以在线扩容

  2. linux系统在安装时没有选择LVM(逻辑卷)安装,是选择直接建立分区安装的话无法在线扩容

第二步:验证是否系统是LVM下安装的

  1. 在系统里—输入以下命令: df -h

[root@bogon Desktop]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda2 18G 11G 6.0G 64% /

tmpfs 931M 224K 931M 1% /dev/shm

/dev/sda1 283M 39M 229M 15% /boot

You have new mail in /var/spool/mail/root

/dev/sda2 18G 11G 6.0G 64% / --》 出现此分区方式为正常分区没有做LVM逻辑卷 无法在线扩容系统

201,第二百零一个命令lvs查看是否有逻辑卷

[root@bogon Desktop]# lvs -------此命令查看是否有逻辑卷

[root@bogon Desktop]#

202,第二百零二个命令vgs 命令查看是否有卷组

[root@bogon Desktop]# vgs -------此命令查看是否有卷组

[root@bogon Desktop]#

----------------------------------------------------------------------------以上查看系统是否有逻辑卷

2.LVM逻辑卷系统–检测方法如下

[root@localhost ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/centos-root 17G 3.8G 14G 22% /

devtmpfs 473M 0 473M 0% /dev

tmpfs 489M 0 489M 0% /dev/shm

tmpfs 489M 7.2M 482M 2% /run

tmpfs 489M 0 489M 0% /sys/fs/cgroup

/dev/sda1 1014M 162M 853M 16% /boot

tmpfs 98M 4.0K 98M 1% /run/user/42

tmpfs 98M 32K 98M 1% /run/user/1000

/dev/sr0 4.3G 4.3G 0 100% /run/media/admin/CentOS 7 x86_64

[root@localhost ~]#

/dev/mapper/centos-root 17G 3.8G 14G 22% / 此分区是在逻辑卷上—可以在线扩容系统

查看是否有逻辑卷—使用命令如下

[root@localhost ~]# vgs ------》此命令查看卷组—19G 卷组的名字叫 centos

VG #PV #LV #SN Attr VSize VFree

centos 1 2 0 wz–n- <19.00g 0

[root@localhost ~]#

[root@localhost ~]# lvs ----》此命令是查看逻辑卷分区情况—17G root使用 2G—swap交换分区使用

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

root centos -wi-ao---- <17.00g

swap centos -wi-ao---- 2.00g

[root@localhost ~]#

-------------------------------------------------------------------------以上查看系统的逻辑卷使用情况

第三:没有逻辑卷的系统怎么做根分区扩容

1.-----暂时没有快速高效的软件能实现,可以使用原始方法(无经验和有待测试):

(一) 将现有系统关机

(二) 用USB引导使用ubuntu系统进入尝试安装模式(类似windows系统的PE模式)

(三) 进入系统后,将所有原系统的数据拷贝走(使用容量大的移动硬盘)

(四) 然后清空服务器的磁盘空间重新安装系统

(五) 将拷贝出来的数据在拷贝回到新的系统里

---------------以上方法不推荐使用

linux 7 版本linux 7 版本linux 7 版本linux 7 版本linux 7 版本linux 7 版本linux 7 版本

第四:有逻辑卷的系统怎么做根分区扩容

1.第一你确定你的系统是逻辑卷分区

2.将新的磁盘加入到根分区还是将其他分区减少,然后再将减下来的空间给根分区------》这是两种操作

(一)现在先做如何在添加磁盘后给根扩容:请输入以下命令:

[root@bogon ~]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x000d4147

Device Boot Start End Blocks Id System

/dev/sda1 * 2048 2099199 1048576 83 Linux

/dev/sda2 2099200 41943039 19921920 8e Linux LVM

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors --------这个是新添加的磁盘

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/centos-root: 18.2 GB, 18249416704 bytes, 35643392 sectors------------这个就是逻辑卷的分区

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@bogon ~]#

#####将新的磁盘 Disk /dev/sdb: 21.5 GB 分区-----------------------------分区新磁盘

[root@localhost ~]# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Device does not contain a recognized partition table

Building a new DOS disklabel with disk identifier 0x1cd67195.

Command (m for help): p ----------------------查看分区列表

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x1cd67195

Device Boot Start End Blocks Id System

Command (m for help): n----------------------------------创建分区

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p ----------------------------默认P

Partition number (1-4, default 1): -----------回车

First sector (2048-41943039, default 2048): ------------回车

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): -----------回车

Using default value 41943039

Partition 1 of type Linux and of size 20 GiB is set

Command (m for help): t ----------------------------------------------进入类型模式(linux 6 版本跳过此操作进入下一步)

Selected partition 1

Hex code (type L to list all codes): L -------------------------------列出类型列表(linux 6 版本跳过此操作进入下一步)

0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris

1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-

2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-

3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-

4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx

5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data

6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .

7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility

8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt

9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access

a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O

b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor

c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs

e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT

f W95 Ext’d (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/

10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b

11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor

12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor

14 Hidden FAT16 ❤️ 61 SpeedStor ab Darwin boot f2 DOS secondary

16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS

17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE

18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto

1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep

1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT

1e Hidden W95 FAT1 80 Old Minix

Hex code (type L to list all codes): 8e --------------------------选择LVM模式(linux 6 版本跳过此操作进入下一步)

Changed type of partition ‘Linux’ to ‘Linux LVM’

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x1cd67195

Device Boot Start End Blocks Id System

/dev/sdb1 2048 41943039 20970496 8e Linux LVM

Command (m for help): w -------------------------------------w保存

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

[root@localhost ~]# partprobe ----刷新磁盘信息

[root@localhost ~]# mkfs.ext4 /dev/sdb1 --------------------------格式化磁盘(linux 7 版本跳过此操作进入下一步)

[root@localhost ~]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x000b1793

Device Boot Start End Blocks Id System

/dev/sda1 * 2048 2099199 1048576 83 Linux

/dev/sda2 2099200 41943039 19921920 8e Linux LVM

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x1cd67195

Device Boot Start End Blocks Id System

/dev/sdb1 2048 41943039 20970496 8e Linux LVM ---------------------已经创建好了

Disk /dev/mapper/centos-root: 18.2 GB, 18249416704 bytes, 35643392 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@localhost ~]# vgs -----------查看卷组

VG #PV #LV #SN Attr VSize VFree

centos 1 2 0 wz–n- <19.00g 0

203,第二百零三个命令vgdisplay 查看详细的卷组信息

[root@localhost ~]# vgdisplay -v

— Volume group —

VG Name centos

System ID

Format lvm2

Metadata Areas 1

Metadata Sequence No 3

VG Access read/write

VG Status resizable

MAX LV 0

Cur LV 2

Open LV 2

Max PV 0

Cur PV 1

Act PV 1

VG Size <19.00 GiB

PE Size 4.00 MiB

Total PE 4863

Alloc PE / Size 4863 / <19.00 GiB

Free PE / Size 0 / 0

VG UUID Ejf5mJ-e621-HeVn-cMP3-mVST-UMah-iO0chw

— Logical volume —

LV Path /dev/centos/swap

LV Name swap

VG Name centos

LV UUID gmxOFa-rswC-e20B-NLxR-OlAd-hLsB-hnep5t

LV Write Access read/write

LV Creation host, time localhost, 2018-11-23 18:39:28 +0800

LV Status available

# open 2

LV Size 2.00 GiB

Current LE 512

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 8192

Block device 253:1

— Logical volume —

LV Path /dev/centos/root

LV Name root

VG Name centos

LV UUID 7u6Wf8-K4yc-UKbQ-13EV-VeeA-43B6-99C4dq

LV Write Access read/write

LV Creation host, time localhost, 2018-11-23 18:39:28 +0800

LV Status available

# open 1

LV Size <17.00 GiB

Current LE 4351

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 8192

Block device 253:0

— Physical volumes —

PV Name /dev/sda2

PV UUID 6JWerE-YTLk-fYm2-wsK7-cvGg-J3ar-s0d4H6

PV Status allocatable

Total PE / Free PE 4863 / 0

**204,第二百零四个命令:**创建逻辑卷

[root@localhost ~]# pvcreate /dev/sdb1 -----------------------将新创建的分区用PV创建逻辑磁盘

Physical volume “/dev/sdb1” successfully created.

**205,第二百零五个命令:**查看逻辑卷磁盘

[root@localhost ~]# pvs --------------------------------------查看创建好的磁盘

PV VG Fmt Attr PSize PFree

/dev/sda2 centos lvm2 a-- <19.00g 0

/dev/sdb1 lvm2 — <20.00g <20.00g

206,第二百零六个命令:卷组扩建

[root@localhost ~]# vgextend centos /dev/sdb1--------------------------------卷组扩建—将新的PV创建好的/dev/sdb1加进卷组

Volume group “centos” successfully extended

**207,第二百零七个命令:**逻辑卷扩建

[root@localhost ~]# lvextend -L +10G /dev/centos/root ---------------------------将根分区扩建10G

Size of logical volume centos/root changed from <17.00 GiB (4351 extents) to <27.00 GiB (6911 extents).

Logical volume centos/root successfully resized.

[root@localhost ~]# xfs_growfs /dev/centos/root --------------------------------------刷新一下(linux 6 版本跳过此操作进入下一步)

[root@localhost ~]# resize2fs /dev/VolGroup/lv_root -------------------------- (linux 7 版本跳过此操作进入下一步)

meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=1113856 blks

​ = sectsz=512 attr=2, projid32bit=1

​ = crc=1 finobt=0 spinodes=0

data = bsize=4096 blocks=4455424, imaxpct=25

​ = sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=1

log =internal bsize=4096 blocks=2560, version=2

​ = sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

data blocks changed from 4455424 to 7076864

第五步验证**:**

[root@localhost ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/centos-root 27G 7.2G 20G 27% / ------------------------原来是17G 现在是27G 成功了

devtmpfs 473M 0 473M 0% /dev

tmpfs 489M 0 489M 0% /dev/shm

tmpfs 489M 7.1M 482M 2% /run

tmpfs 489M 0 489M 0% /sys/fs/cgroup

/dev/sda1 1014M 162M 853M 16% /boot

tmpfs 98M 20K 98M 1% /run/user/1000

/dev/sr0 4.3G 4.3G 0 100% /run/media/admin/CentOS 7 x86_64

[root@localhost ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

root centos -wi-ao---- <27.00g

swap centos -wi-ao---- 2.00g

[root@localhost ~]# vgs

VG #PV #LV #SN Attr VSize VFree

centos 2 2 0 wz–n- 38.99g <10.00g

[root@localhost ~]#

第六步**:**其他扩容方法

现在做如何将现有的目录空间减少,然后增加给根。 命令如下:

1.首先查看磁盘使用情况

[root@localhost ~]# df -h

文件系统 容量 已用 可用 已用% 挂载点

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root 154G 7.9G 139G 6% /

tmpfs 1.9G 100K 1.9G 1% /dev/shm

/dev/sda1 485M 69M 391M 15% /boot

/dev/mapper/VolGroup-lv_home 299G 984M 283G 1% /home

2、卸载/home

[root@localhost ~]# umount /home

umount /home 如果提示无法卸载,则是有进程占用/home,使用如下命令来终止占用进程:

208,第二百零八个命令:fuser****强制卸载

[root@localhost ~]# fuser -m /home

3、调整分区大小

[root@localhost ~]# resize2fs -p /dev/mapper/VolGroup-lv_home 20G

如果提示运行“e2fsck -f /dev/mapper/VolGroup-lv_home”,则执行相关命令:

[root@localhost ~]# e2fsck -f /dev/mapper/VolGroup-lv_home 然后重新执行命令:

[root@localhost ~]# resize2fs -p /dev/mapper/VolGroup-lv_home 20G

注:resize2fs 为重新设定磁盘大小,只是重新指定一下大小,并不对结果有影响,需要下面lvreduce的配合

4、挂载上/home,查看磁盘使用情况

[root@localhost ~]# mount /home

[root@localhost ~]# df -h

5、设置空闲空间

使用lvreduce指令用于减少LVM逻辑卷占用的空间大小。可能会删除逻辑卷上已有的数据,所以在操作前必须进行确认。记得输入 “y”

[root@localhost ~]# lvreduce -L 20G /dev/mapper/VolGroup-lv_home

注:lvreduce -L 20G的意思为设置当前文件系统为20G,如果lvreduce -l 20G是指从当前文件系统上减少20G

使用lvreduce减小逻辑卷的大小。注意:减小后的大小不能小于文件的大小,否则会丢失数据。

可以使用vgdisplay命令等查看一下可以操作的大小。也可以是用fdisk -l命令查看详细信息。

[root@localhost ~]# vgdisplay

注:vgdisplay为显示LVM卷组的元数据信息

6.把闲置空间挂在到根目录下

[root@localhost ~]# lvextend -L +283G /dev/mapper/VolGroup-lv_root

注:lvextend -L +283G为在文件系统上增加283G

[root@localhost ~]# resize2fs -p /dev/mapper/VolGroup-lv_root

7、检查调整结果

[root@localhost ~]# df -h

资源限制使用篇**:**

LINUX系统资源限制方法

总结:资源限制分ulimit和Cgroup限制

1, 为什么要给系统加上紧箍咒

2, 从哪几个方面来限制资源

本文主要讲解以下几个方法

1**,Ulimit** 资源限制

针对用户进行限制

限制有关文件打开数,网络和磁盘使用和内存等。

Posix:bash来限制,解释器限制

限制写入文件大小

限制在本机能打开多少文件,默认一个进程能打开1024个文件类似网站会被多人访问,产生大量的文件描述符(ulimit限制的是文件描述符),一个文件描述符就是一个文件,所以web网站的文件打开数通常调高到65535。

比如:一个nginx网站,有一个首页,html.index这个文件是web网站的首页。这个时候有500人访问这个首页,那就需要打开500个文件描述符。

ftp和http等并发过大的 都需要调试最大文件打开数。

2,Cgroup**😗* 内核级别限制

限制进程的资源使用,限制单个进程的cpu和内存等资源。

Ulimit讲解:

Ulimit是临时限制。永久限制需要修改文件:/etc/security/limits.conf

Ulimit有soft和hard两种,分别是soft用户可以自己修改软限制。和hard应限制需要管理员设置和修改。

例如:执行ulimit -a 可以查看本机系统可以调试限制哪些资源,如果换一个用户去查看,限制的资源会有变化。

· *ulimit -n*  查看用户级的限制(一般是1024,向阿里云华为云这种云主机一般是65535)VMware虚拟机可以支持(1000000)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ulimit -a

core file size (blocks, -c) 0 //限制内核文件的大小限制

data seg size (kbytes, -d) unlimited //最大数据大小限制

scheduling priority (-e) 0 //调度优先级,一般根据nice设置

file size (blocks, -f) unlimited //最大文件大小限制

pending signals (-i) 192088 //信号可以被挂起的最大数,这个值针对所有用户,表示可以被挂起/阻塞的最大信号数量。

max locked memory (kbytes, -l) 8000 //内存锁定值的限制

max memory size (kbytes, -m) unlimited //最大可以使用内存限制

open files (-n) 409600 //进程打开文件数的限制

pipe size ( 512 bytes, -p) 8 //管道文件大小限制

POSIX message queues (bytes, -q) 819200 //可以创建使用POSIX消息队列的最大值,单位为bytes

real-time priority (-r) 0 //限制程序实时优先级的范围,只针对普通用户

stack size (kbytes, -s) 10240 //限制进程使用堆栈段的大小

cpu time (seconds, -t) unlimited //)程序占用CPU的时间,单位是秒

max user processes (-u) 409600 //限制程序可以fork的进程数,只对普通用户有效

virtual memory (kbytes, -v) unlimited //限制进程使用虚拟内存的大小

file locks (-x) unlimited //锁定文件大小限制

简单举例,open files (-n) 65535 这个最大打开文件数是 65535最大文件数(阿里云的是最大65535)。默认是65535,阿里云的ECS无法修改的,但是VMware的虚拟机是默认:1024,最大是1000000一百万。具体你们可以看看自己的系统。。

举例:

Ulimit -Hn 60000

Uimit -Sn 60000

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

**3,**实验:测试ulimit使用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

随便一个命令 在执行的时候都需要打开多个文件。所以限制文件描述符的个数 至关重要。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个ulimit我个人觉得 使用它的场景一般是 将这个系统的默认值,调高到最大就行了,一般情况下 研发会给你参数,因为Java代码他写的 他清楚需要多少资源,他们在上线前都是做好的压测的。

**4,**单个进程限制方法

个人认为:进程限制和docker的限制方式一样,都是依据cgroup的原理。目前我在网上没有找到相关依据。大家可以尝试下看看。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

init:

一是启动时间长,init是串行启动,只有前一个进程启动完,才会启动下一个进程

二是启动脚本复杂,Init进程只是执行启动脚本,不管其他事情,脚本需要自己处理各种情况,这往往使得脚本变得很长

由Linux内核加载运行,位于 /sbin/init ,是系统中第一个进程,PID永远为1

systemd:

· 按需启动服务,减少系统资源消耗。

· 尽可能并行启动进程,减少系统启动等待时间

· 由Linx内核加载运行,位于 /usr/lib/systemd/systemd ,是系统中第一个进程,PID永远为1

对于支持 systemd 的程序,安装的时候,会自动的在 /usr/lib/systemd/system 目录添加一个配置文件。当我们使用 systemctl 控制该程序时,比如执行开启sshd服务:systemctl start sshd.service 。那么我们的 systemctl 就会开启 sshd.service 配置里面指向的 /usr/sbin/sshd 可执行文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

先进入这个目录:/etc/systemd/system/multi-user.target.wants

每个*.Wants的目录都是一个启动级别,每个目录里面的文件都会启动。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

以命令方式启动:

systemctl set-default multi-user.target

以图形方式启动:

systemctl set-default graphical.target

为什么说下启动这个服务,因为我们的进程资源限制需要在依托systemd这个服务来进

这边为了讲解和测试,所以就针对sshd这个进程做讲解。

首先要知道所有的进程都有加入到 systemd管理系统里面。这样才能限制。

需要配置:[root@iZbp1fehdscdu2pfkdhbubZ ~]# cat /usr/lib/systemd/system/sshd.service

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ExecStart=/usr/sbin/sshd -D $OPTIONS —这个决定最终启动那个服务。我们可以自己写一个死循环脚本来测试。

限制进程有两个方法,一个是在sshd.service文件里面直接修改,如下图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

目前不建议在这里直接修改。

第二种方法是 drop-in方式。

需要在 /etc/system/system/下创建一个目录

如:mkdir /etc/systemd/system/sshd.servie.d/

sshd.servie.d这名字必须是服务名字才行。

并在这个sshd.servie.d目录下创建一个文件。

如: touch ssh.conf

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

配置完不要忘了 重新加载下文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

重新查看状态 就会多一个drop-in文件的标识了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

*具体参数如何配置。可以执行命令 man* *system.exec* *如下图:*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

*以上两种方式,优先级为drop-in最高。同时配置的话,已drop-in为准*

*实验:先写个死循环脚本*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

*C**hmo**d + x test.sh*

*使用s**ar -P ALL 1*

*来查看下cpu的使用情况*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

*运行写好的死循环脚本后:*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

*这个时候我们去看下 这个进程使用的cpu时间是多少了* *执行* *ps* *-aux*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

*根据图片显示,时间已经用了* *42**秒了。*

*C**pu的时间和我们的人类时间是不一样的,cpu* *的时间是工作的时间,空闲的不会显示。*

*可以用一下命令来查看 cp**u**的时间使用差别*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

*接下来我们使用限制手段,防止死循环脚本或者进程的资源占用*

*首先拷贝:ssh**d.service* *命名为 test**.service*

*然后我们修改test**.service**文件,如下图:*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

*在这个文件基础上我们增加资源限制*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

*启动服务*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

*查看服务cpu使用*

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

*时间运行到1**0**秒自动**会**kill掉。*

总结**:**

*可能有人会问,如果是正产进程我配置了资源使用限制,不是死循环脚本,cpu的时间使用很长,系统kill掉 岂不是影响服务了么?*

*答:理论上你在给这个进程配置资源限制的时候,你要对这个有所评估的。不能盲目配置的。*

病毒查杀篇**:**

ClamAV是一个在命令行下查毒软件,因为它不将杀毒作为主要功能,默认只能查出您计算机内的病毒,但是无法清除,至多删除文件。

安装方法:

Cent.os6.x

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

Centos7.x

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

[root@CentOS7 home]# yum install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd -y —执行安装命令即可。

· 扫描所有用户的主目录就使用 clamscan -r /home

· 扫描您计算机上的所有文件并且显示所有的文件的扫描结果,就使用 clamscan -r /

· 扫描您计算机上的所有文件并且显示有问题的文件的扫描结果,就使用 clamscan -r --bell -i /

安装完后,执行执行扫描即可。

209,第二百零九个命令clamscan扫描病毒工具

[root@CentOS7 home]# clamscan -r /home/

LibClamAV Warning: **************************************************

LibClamAV Warning: *** The virus database is older than 7 days! ***

LibClamAV Warning: *** Please update it as soon as possible. ***

LibClamAV Warning: **************************************************

^C

[root@CentOS7 home]# clamscan -r /home/

LibClamAV Warning: **************************************************

LibClamAV Warning: *** The virus database is older than 7 days! ***

LibClamAV Warning: *** Please update it as soon as possible. ***

LibClamAV Warning: **************************************************

/home/wm/.bash_logout: OK

/home/wm/.bash_profile: OK

/home/wm/.bashrc: OK

/home/wm/.cache/gdm/session.log: OK

/home/wm/.cache/imsettings/log: OK

/home/wm/.cache/gnome-shell/update-check-3.28: Empty file

/home/wm/.cache/tracker/db-version.txt: OK

/home/wm/.cache/tracker/meta.db: OK

/home/wm/.cache/tracker/db-locale.txt: OK

/home/wm/.cache/tracker/meta.db-wal: OK

/home/wm/.cache/tracker/meta.db-shm: OK

/home/wm/.cache/tracker/ontologies.gvdb: OK

/home/wm/.cache/tracker/parser-sha1.txt: OK

/home/wm/.cache/tracker/locale-for-miner-user-guides.txt: OK

/home/wm/.cache/tracker/locale-for-miner-apps.txt: OK

/home/wm/.cache/tracker/last-crawl.txt: OK

/home/wm/.cache/tracker/first-index.txt: OK

/home/wm/.cache/abrt/applet_dirlist: Empty file

/home/wm/.cache/abrt/lastnotification: OK

/home/wm/.cache/event-sound-cache.tdb.b7931e72512b4ded8345ffb7d656d2d8.aarch64-redhat-linux-gnu: OK

/home/wm/.cache/gstreamer-1.0/registry.aarch64.bin: OK

/home/wm/.cache/yelp/WebKitCache/Version 16/salt: OK

/home/wm/.dbus/session-bus/b7931e72512b4ded8345ffb7d656d2d8-0: OK

/home/wm/.config/pulse/b7931e72512b4ded8345ffb7d656d2d8-device-volumes.tdb: OK

/home/wm/.config/pulse/b7931e72512b4ded8345ffb7d656d2d8-stream-volumes.tdb: OK

/home/wm/.config/pulse/b7931e72512b4ded8345ffb7d656d2d8-card-database.tdb: OK

/home/wm/.config/pulse/cookie: OK

/home/wm/.config/pulse/b7931e72512b4ded8345ffb7d656d2d8-default-sink: OK

/home/wm/.config/pulse/b7931e72512b4ded8345ffb7d656d2d8-default-source: OK

/home/wm/.config/ibus/bus/b7931e72512b4ded8345ffb7d656d2d8-unix-0: OK

/home/wm/.config/dconf/user: OK

/home/wm/.config/evolution/sources/system-proxy.source: OK

/home/wm/.config/user-dirs.dirs: OK

/home/wm/.config/user-dirs.locale: OK

/home/wm/.config/gtk-3.0/bookmarks: OK

/home/wm/.config/nautilus/desktop-metadata: OK

/home/wm/.config/gnome-initial-setup-done: OK

/home/wm/.config/yelp/yelp.cfg: OK

/home/wm/.ICEauthority: OK

/home/wm/.local/share/keyrings/login.keyring: OK

/home/wm/.local/share/keyrings/user.keystore: OK

/home/wm/.local/share/gnome-shell/application_state: OK

/home/wm/.local/share/gnome-shell/notifications: OK

/home/wm/.local/share/telepathy/mission-control/accounts.cfg: OK

/home/wm/.local/share/telepathy/mission-control/accounts-goa.cfg: OK

/home/wm/.local/share/evolution/addressbook/system/contacts.db: OK

/home/wm/.local/share/evolution/calendar/system/calendar.ics: OK

/home/wm/.local/share/gsettings-data-convert: OK

/home/wm/.local/share/gnome-settings-daemon/input-sources-converted: Empty file

/home/wm/.local/share/tracker/data/.meta.isrunning: Empty file

/home/wm/.local/share/tracker/data/tracker-store.journal: OK

/home/wm/.local/share/tracker/data/tracker-store.ontology.journal: OK

/home/wm/.local/share/flatpak/repo/config: OK

/home/wm/.local/share/flatpak/.changed: Empty file

/home/wm/.local/share/gvfs-metadata/home: OK

/home/wm/.local/share/gvfs-metadata/home-43a32975.log: OK

/home/wm/.local/share/gvfs-metadata/root: OK

/home/wm/.local/share/gvfs-metadata/root-78e7c60d.log: OK

/home/wm/.esd_auth: OK

/home/1.txt: OK

----------- SCAN SUMMARY -----------

Known viruses: 6288077

Engine version: 0.101.4

Scanned directories: 110

Scanned files: 55

Infected files: 0 --------这个数据显示有多少文件有问题,0就是没有。

Data scanned: 2.23 MB

Data read: 3.63 MB (ratio 0.61:1)

Time: 23.232 sec (0 m 23 s)

[root@CentOS7 home]#

**210,第二百一十个命令:**freshclam 更新病毒库

[root@CentOS7 home]# freshclam —这个命令是更新病毒库的直接执行就可以了。

gitlab部署和升级和迁移篇

首先讲解如何部署,然后在讲解部署后如何升级到高版本。本书不讲解 gitlab的使用,只讲解安装和升级。

第一步**:下载rpm包。**

地址如下:

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 系统版本7

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/ 系统版本6

这个地址是清华源的地址,下载的都是社区版。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第二步**,下载好后上传到服务器中,**上传命令可以在Linux系统中执行

[root@localhost ~]#rz -be

直接会车后在弹出的对话框中找到下载包如图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在安装过程中需要安装相关的依赖包:

yum install curl openssh-server postfix cronie

yum -y install policycoreutils-python #必须安装该依赖包

然后在Linux系统中执行安装命令如图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

出现上图的显示,说明安装完成了,但是还没有成功,需要去修改配置文件。

配置文件:/etc/gitlab/gitlab.rb

需要修改的内容为:url地址为本级地址,如下图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后执行:gitlab-ctl reconfigure 这一个步骤时间很长。

上一步骤成功后会出现以下信息:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后就是web 界面登录:密码在配置文件中指定。后面有参考信息。

接下来讲解升级操作**:**

注:升级前将所有配置文件备份好。

1,下载所需rpm包

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 镜像下载地址。

2,升级不能跨版本。

升级需要一个一个版本升级,全部下载下来,然后直接直接执行rpm -Uvh *rpm即可。

12.10.14 -> 13.0.14 -> 13.1.11 -> 13.8.8 仅供参考,gitlab升级不能跨版本升级,需要小版本多次升级。

3,关闭现在运行的服务。

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION -----查看gitlab版本

执行命令:

**211,**第二百一十一个命令:gitlab-ctl的启动和停止

gitlab-ctl stop ----将正在运行的gitlab服务停止

4,备份数据

**212,第二百一十二个命令:**gitlab备份所有数据

Gitlab-rake gitlab:backup:create ----备份所有数据

数据备份好后,会放到/var/opt/gitlab/backups

目录下,如果没有请find查找下。

5,开始升级

执行命令 :

[root@node ~]# rpm -Uvh 下载好的gitlab包

6,加载配置文件:

**213,第二百一十三个命令:**重新加载配置文件

[root@node ~]# gitlab-ctl reconfigure 重新加载配置文件

[root@node ~]# gitlab-ctl restart 重新启动服务

7,接下来讲解下迁移:

我们需要将旧的服务器上的数据迁移到新的服务器上,

需要保证两台机器的gitlab版本一直,并需要将备份好的数据传送到新的服务器上:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将上边标记的文件,从旧的服务器上拷贝到新的服务器上。相同位置即可。并在新的服务器上已经有一个和旧的版本一样的gitlab试运行正常的了。

新服务器恢复GitLab

8,执行导入备份数据

将备份文件权限修改为777,避免出现权限不够的问题

cd /var/opt/gitlab/backups

chomd 777 1561597102_2019_06_27_12.0.1_gitlab_backup.tar

停止数据连接服务

gitlab-ctl stop unicorn

gitlab-ctl stop sidekiq

恢复备份文件到GitLab

214,第二百一十四个命令gitlab恢复备份文件

gitlab-rake gitlab:backup:restore BACKUP=备份文件编号

例如:备份文件名为1561597102_2019_06_27_12.0.1_gitlab_backup.tar,则编号为1561597102_2019_06_27_12.0.1。

在提示中敲入“yes”继续。

9,启动服务

启动GitLab

gitlab-ctl start

最后检查新旧GitLab的内容,完全一模一样,迁移成功!

这里记住,gitlab是有一个nginx服务器的,是gitlab自带的,需要配置相关转发,具体配置需要结合本地实际情况。

10,配置文件参考:

以下图片仅供参考:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

nginx篇

**,nginx****介绍**

作为web服务器最常用的功能之一,尤其是反向代理。

**,**nginx的配置文件讲解

/etc/nginx/nginx.conf 配置文件详解:

# For more information on configuration, see:

# * Official English Documentation: http://nginx.org/en/docs/

# * Official Russian Documentation: http://nginx.org/ru/docs/

# 运行用户,默认是nginx,可以不进行设置

user nginx;

#Nginx进程,一般设置和cpu核数一样,默认自动。

worker_processes auto;

#错误日志存放位置

error_log /var/log/nginx/error.log;

#进程pid存放位置

pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.

include /usr/share/nginx/modules/*.conf;

events {

worker_connections 1024;—#单个后台进程的最大并发数

}

http {

log_format main '$remote_addr - r e m o t e u s e r [ remote_user [ remoteuser[time_local] “$request” ’

​ '$status b o d y b y t e s s e n t " body_bytes_sent " bodybytessent"http_referer" ’

​ ‘“ h t t p u s e r a g e n t " " http_user_agent" " httpuseragent""http_x_forwarded_for”’;

#访问日志的存放位置

access_log /var/log/nginx/access.log main;

#是否开启高效传输模式 on开启 off关闭

sendfile on;

减少网络报文段的数量

tcp_nopush on;

tcp_nodelay on;

#保持连接的时间,也叫超时时间

keepalive_timeout 65;

types_hash_max_size 2048;

#文件扩展名和类型映射表

include /etc/nginx/mime.types;

#默认的文件类型

default_type application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.

# See http://nginx.org/en/docs/ngx_core_module.html#include

# for more information.

#包含的子配置项的位置和文件

include /etc/nginx/conf.d/*.conf;

server {

​ listen 80 default_server;#配置监听端口

​ listen [::]:80 default_server;

​ server_name _;

​ root /usr/share/nginx/html;#服务默认启动目录

​ # Load configuration files for the default server block.

​ include /etc/nginx/default.d/*.conf;

​ location / {

​ }

​ error_page 404 /404.html;# 配置404页面

​ location = /40x.html {

​ }

​ error_page 500 502 503 504 /50x.html;#错误状态码的显示页面,配置后需要重启

​ location = /50x.html {

​ }

}

# Settings for a TLS enabled server.

#

# server {

# listen 443 ssl http2 default_server;

# listen [::]:443 ssl http2 default_server;

# server_name _;

# root /usr/share/nginx/html;

#

# ssl_certificate “/etc/pki/nginx/server.crt”;

# ssl_certificate_key “/etc/pki/nginx/private/server.key”;

# ssl_session_cache shared:SSL:1m;

# ssl_session_timeout 10m;

# ssl_ciphers HIGH:!aNULL:!MD5;

# ssl_prefer_server_ciphers on;

#

# # Load configuration files for the default server block.

# include /etc/nginx/default.d/*.conf;

#

# location / {

# }

#

# error_page 404 /404.html;

# location = /40x.html {

# }

#

# error_page 500 502 503 504 /50x.html;

# location = /50x.html {

# }

# }

}

**,**nginx的日常工作配置

主要的配置参数在server的框架里,其他的配置信息不需要修改。静态页面直接部署在nginx的服务器上。

weight=1加权轮询:跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB

max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。

fail_timeout,在经历了max_fails次失败后,暂停服务的时间单位秒。max_fails可以和fail_timeout一起使用。

1、负载均衡算法

upstream 支持4种负载均衡调度算法:

A、轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器;

B、ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。

C、url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。后台服务器为缓存的时候效率。

D、fair:这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持 fair的,如果需要使用这种调度算法,必须下载Nginx的 upstream_fair模块。

server {

listen 80; #nginx监听的端口

server_name localhost; #拦截的用户访问路径

#charset koi8-r;

#access_log logs/host.access.log main;

# 访问本地绝对路径下的静态html

location /wm { ----这里写拼接信息,自定义。

#root html;

root /root/nginx/html/index.html; —这个配置路径

index index.html index.htm;

}

#访问路径拼接

location /wm2 {

alias /root/nginx/html2/index.html;

autoindex on;

}

}

某生产试例:

将以下信息:只需更改接口信息和alias后边的路径,然后复制到server框架里面就可以了。

# location / {

# #rewrite .* /index.html break;

# alias /data/写/你/的路径/;

# index index.html index.htm;

# try_files $uri /index.html;

# }

**,**nginx的反向代理

反向代理同样在server框架下配置,不要更改其他信息:添加以下信息即可:

第一种:

location /www { ----配置下访问接口

proxy_pass http://127.7.7:443/www; ----需要代理到的地址和端口即可。

proxy_redirect off; —以下这些信息可以不用配置。根据自身需求。

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_connect_timeout 5;

proxy_send_timeout 30;

proxy_read_timeout 10;

}

第二种:

这种方法是实现负载的一种:需要配置两个地方

1,在server框架外配置upstream信息,

具体信息如下:

Upstream wm {

Server 127.7.7.7:800 weight=1 max_fails=2 fail_timeout=30;

Server 127.7.7.8:800 weight=1 max_fails=2 fail_timeout=30;

}

2,在server框架内配置代理信息。

具体信息如下:

location /www { ----配置下访问接口

proxy_pass http://wm; ----需要填写和upstream 一样的信息。

proxy_redirect off; —以下这些信息可以不用配置。根据自身需求。

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_connect_timeout 5;

proxy_send_timeout 30;

proxy_read_timeout 10;

}

五,nginx的启动和重新加载配置

nginx重新加载:

进入nginx的sbin目录,如果找不到可以systemctl status nginx看下,或者find / -name nginx 看下。

进入后,执行:

**215,第二百一十五个命令:**查看nginx文件的语法

[root@CentOS7 sbin]# ./nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

[root@CentOS7 sbin]#

如果没有报错,那就执行:

216,第二百一十六个命令重新加载nginx服务使其更改的配置生效

[root@CentOS7 sbin]# ./nginx -s reload

就可以了。

**,nginx启动:**

重新启动下

第一种:systemctl restart nginx

第二种,在sbin目录里执行:

/etc/nginx/nginx.conf—这个配置文件就是上一步输出的信息。

[root@CentOS7 sbin]# ./nginx -c /etc/nginx/nginx.conf

**,**nginx的流量限制和资源限制

下边这个信息放到http框架里面

limit_req_zone $binary_remote_addr zone=allips:100m rate=10r/s;

下边这个配置在server里面:

limit_req zone=allips burst=5 nodelay;

试例:

http {

limit_conn_log_level error;

limit_conn_status 503;

limit_conn_zone $binary_remote_addr zone=one:10m;

limit_conn_zone $server_name zone=perserver:10m;

limit_req_zone b i n a r y r e m o t e a d d r z o n e = a l l i p s : 100 m r a t e = 10 r / s ; 其中 binary_remote_addr zone=allips:100m rate=10r/s; 其中 binaryremoteaddrzone=allips:100mrate=10r/s;其中binary_remote_addr有时需要根据自己已有的log_format变量配置进行替换

server {

​ …………………….

​ limit_conn one 100;

​ limit_conn perserver 1000;

​ limit_req zone=allips burst=5 nodelay;

​ ………………….

​ }

}

七,nginx的优化

net.ipv4.tcp_max_tw_buckets = 6000

​ timewait 的数量,默认是180000。

​ net.ipv4.ip_local_port_range = 1024 65000

​ 允许系统打开的端口范围。

​ net.ipv4.tcp_tw_recycle = 1

​ 启用timewait 快速回收。

​ net.ipv4.tcp_tw_reuse = 1

​ 开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接。

​ net.ipv4.tcp_syncookies = 1

​ 开启SYN Cookies,当出现SYN 等待队列溢出时,启用cookies 来处理。

​ net.core.somaxconn = 262144

​ web 应用中listen 函数的backlog 默认会给我们内核参数的net.core.somaxconn 限制到128,而nginx 定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值。

​ net.core.netdev_max_backlog = 262144

​ 每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

​ net.ipv4.tcp_max_orphans = 262144

​ 系统中最多有多少个TCP 套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS 攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。

​ net.ipv4.tcp_max_syn_backlog = 262144

​ 记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M 内存的系统而言,缺省值是1024,小内存的系统则是128。

​ net.ipv4.tcp_timestamps = 0

​ 时间戳可以避免序列号的卷绕。一个1Gbps 的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。

​ net.ipv4.tcp_synack_retries = 1

​ 为了打开对端的连接,内核需要发送一个SYN 并附带一个回应前面一个SYN 的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK 包的数量。

​ net.ipv4.tcp_syn_retries = 1

​ 在内核放弃建立连接之前发送SYN 包的数量。

​ net.ipv4.tcp_fin_timeout = 1

​ 如 果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2 状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180 秒,3你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB 服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2 的危险性比FIN-WAIT-1 要小,因为它最多只能吃掉1.5K 内存,但是它们的生存期长些。

​ net.ipv4.tcp_keepalive_time = 30

​ 当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时。

**217,第二百一十七个命令:**重新加载内核文件

vi /etc/sysctl.conf

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 68719476736

kernel.shmall = 4294967296

net.ipv4.tcp_max_tw_buckets = 6000

net.ipv4.tcp_sack = 1

net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_rmem = 4096 87380 4194304

net.ipv4.tcp_wmem = 4096 16384 4194304

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.core.netdev_max_backlog = 262144

net.core.somaxconn = 262144

net.ipv4.tcp_max_orphans = 3276800

net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_fin_timeout = 1

net.ipv4.tcp_keepalive_time = 30

net.ipv4.ip_local_port_range = 1024 65000

Nginx常见问题处理

**1,**问题

本案例要求对Nginx服务器进行适当优化,解决如下问题,以提升服务器的处理性能:

Ÿ 如何自定义返回给客户端的404错误页面

Ÿ 如何查看服务器状态信息

Ÿ 如果客户端访问服务器提示“Too many open files”如何解决

Ÿ 如何解决客户端访问头部信息过长的问题

Ÿ 如何让客户端浏览器缓存数据

Ÿ 日志切割

Ÿ 开启gzip压缩功能,提高数据传输效率

Ÿ 开启文件缓存功能

然后客户机访问此Web服务器验证效果:

Ÿ 使用ab压力测试软件测试并发量

Ÿ 编写测试脚本生成长头部信息的访问请求

Ÿ 客户端访问不存在的页面,测试404错误页面是否重定向

**2,**步骤

实现此案例需要按照如下步骤进行。

步骤一:自定义报错页面

1)优化前,客户端使用浏览器访问不存在的页面,会提示404文件未找到

[root@client ~]# firefox http://192.168.4.5/xxxxx //访问一个不存在的页面

2)修改Nginx配置文件,自定义报错页面

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf

… …

error_page 404 /40x.html; //自定义错误页面

… …

[root@proxy ~]# vim /usr/local/nginx/html/40x.html //生成错误页面

Oops,No NO no page …

[root@proxy ~]# nginx -s reload

#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:

#****[error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)

3)优化后,客户端使用浏览器访问不存在的页面,会提示自己定义的40x.html页面

[root@client ~]# firefox http://192.168.4.5/xxxxx //访问一个不存在的页面

4)常见http状态码

常见http状态码可用参考表-1所示。

表-1 主机列表

*状态码**功能描述*
200一切正常
301永久重定向
302临时重定向
401用户名或密码错误
403禁止访问(客户端IP地址被拒绝)
404文件不存在
414请求URI头部过长
500服务器内部错误
502Bad Gateway

步骤二:如何查看服务器状态信息(非常重要的功能)

1)编译安装时使用–with-http_stub_status_module开启状态页面模块

[root@proxy ~]# yum -y install gcc pcre-devel openssl-devel //安装常见依赖包

[root@proxy ~]# tar -zxvf nginx-1.12.2.tar.gz

[root@proxy ~]# cd nginx-1.12.2

[root@proxy nginx-1.12.2]# ./configure \

> --with-http_ssl_module //开启SSL加密功能

> --with-stream //开启TCP/UDP代理模块

> --with-http_stub_status_module //开启status状态页面

[root@proxy nginx-1.12.2]# make && make install //编译并安装

2)启用Nginx服务并查看监听端口状态

ss命令可以查看系统中启动的端口信息,该命令常用选项如下:

-a显示所有端口的信息

-n以数字格式显示端口号

-t显示TCP连接的端口

-u显示UDP连接的端口

-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口

-p显示监听端口的服务名称是什么(也就是程序名称)

注意:在RHEL7系统中可以使用ss命令替代netstat命令,功能一样,选项一样。

[root@proxy ~]# /usr/local/nginx/sbin/nginx

[root@proxy ~]# netstat -anptu | grep nginx

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10441/nginx

[root@proxy ~]# ss -anptu | grep nginx

3)修改Nginx配置文件,定义状态页面

[root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf

… …

location /status {

​ stub_status on;

​ #allow IP地址;

​ #deny IP地址;

​ }

… …

[root@proxy ~]# nginx

4)优化后,查看状态页面信息

[root@proxy ~]# curl http://192.168.4.5/status

Active connections: 1

server accepts handled requests

10 10 3

Reading: 0 Writing: 1 Waiting: 0

Active connections:当前活动的连接数量。

Accepts:已经接受客户端的连接总数量。

Handled:已经处理客户端的连接总数量。

(一般与accepts一致,除非服务器限制了连接数量)。

Requests:客户端发送的请求数量。

Reading:当前服务器正在读取客户端请求头的数量。

Writing:当前服务器正在写响应信息的数量。

Waiting:当前多少客户端在等待服务器的响应。

步骤三:优化Nginx并发量

1)优化前使用ab高并发测试

[root@proxy ~]# ab -n 2000 -c 2000 http://192.168.4.5/

Benchmarking 192.168.4.5 (be patient)

socket: Too many open files (24) //提示打开文件数量过多

2)修改Nginx配置文件,增加并发量

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf

… …

worker_processes 2; //与CPU核心数量一致

events {

worker_connections 65535; //每个worker最大并发连接数

use epoll;

}

… …

[root@proxy ~]# nginx -s reload

3)优化Linux内核参数(最大文件数量)

[root@proxy ~]# ulimit -a //查看所有属性值

[root@proxy ~]# ulimit -Hn 100000 //设置硬限制(临时规则)

[root@proxy ~]# ulimit -Sn 100000 //设置软限制(临时规则)

[root@proxy ~]# vim /etc/security/limits.conf

​ … …

* soft nofile 100000

* hard nofile 100000

#该配置文件分4列,分别如下:

#用户或组 硬限制或软限制 需要限制的项目 限制的值

4)优化后测试服务器并发量(因为客户端没调内核参数,所以在proxy测试)

[root@proxy ~]# ab -n 2000 -c 2000 http://192.168.4.5/

步骤四:优化Nginx数据包头缓存

1)优化前,使用脚本测试长头部请求是否能获得响应

[root@proxy ~]# cat lnmp_soft/buffer.sh

#!/bin/bash

URL=http://192.168.4.5/index.html?

for i in {1…5000}

do

​ URL= U R L v {URL}v URLvi=$i

done

curl $URL //经过5000次循环后,生成一个长的URL地址栏

[root@proxy ~]# ./buffer.sh

… …

414 Request-URI Too Large

//提示头部信息过大

2)修改Nginx配置文件,增加数据包头部缓存大小

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf

… …

http {

client_header_buffer_size 1k; //默认请求包头信息的缓存

large_client_header_buffers 4 4k**;** //大请求包头部信息的缓存个数与容量

… …

}

[root@proxy ~]# nginx -s reload

3)优化后,使用脚本测试长头部请求是否能获得响应

[root@proxy ~]#cat cat buffer.sh

#!/bin/bash

URL=http://192.168.4.5/index.html?

for i in {1…5000}

do

​ URL= U R L v {URL}v URLvi=$i

done

curl $URL

[root@proxy ~]# ./buffer.sh

步骤五:浏览器本地缓存静态数据

1)使用Firefox浏览器查看缓存

以Firefox浏览器为例,在Firefox地址栏内输入about:cache将显示Firefox浏览器的缓存信息,如图-3所示,点击List Cache Entries可以查看详细信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图-3

2)清空firefox本地缓存数据,如图-4所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图-4

3)修改Nginx配置文件,定义对静态页面的缓存时间

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf

server {

​ listen 80;

​ server_name localhost;

​ location / {

​ root html;

​ index index.html index.htm;

​ }

location ~* .(jpg|jpeg|gif|png|css|js|ico|xml)$ {

expires 30d; //定义客户端缓存时间为****30天

}

}

[root@proxy ~]# cp /usr/share/backgrounds/day.jpg /usr/local/nginx/html

[root@proxy ~]# nginx -s reload

#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:

#****[error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)

4)优化后,使用Firefox浏览器访问图片,再次查看缓存信息

[root@client ~]# firefox http://192.168.4.5/day.jpg

在firefox地址栏内输入about:cache,查看本地缓存数据,查看是否有图片以及过期时间是否正确。

步骤六:日志切割

日志文件越来越大怎么办?单个文件10G? 如何切割?(非常常见的面试题)

步骤:1. 把旧的日志重命名

  1. kill USR1 PID(nginx的进程PID号)

1)手动执行

备注:/usr/local/nginx/logs/nginx.pid文件中存放的是nginx的进程PID号。

[root@proxy ~]# mv access.log access2.log

[root@proxy ~]# kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)

2)自动完成

每周5的03点03分自动执行脚本完成日志切割工作。

[root@proxy ~]# vim /usr/local/nginx/logbak.sh

#!/bin/bash

date=date +%Y%m%d

logpath=/usr/local/nginx/logs

mv $logpath/access.log l o g p a t h / a c c e s s − logpath/access- logpath/accessdate.log

mv $logpath/error.log l o g p a t h / e r r o r − logpath/error- logpath/errordate.log

kill -USR1 $(cat $logpath/nginx.pid)

[root@proxy ~]# crontab -e

03 03 * * 5 /usr/local/nginx/logbak.sh

步骤七:对页面进行压缩处理

1)修改Nginx配置文件

[root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf

http {

… …

gzip on; //开启压缩

gzip_min_length 1000; //小文件不压缩

gzip_comp_level 4; //压缩比率

gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

//对特定文件压缩,类型参考****mime.types

… …

}

步骤八:服务器内存缓存

1)如果需要处理大量静态文件,可以将文件缓存在内存,下次访问会更快。

http {

open_file_cache max=2000 inactive=20s;

​ open_file_cache_valid 60s;

​ open_file_cache_min_uses 5;

​ open_file_cache_errors off;

//设置服务器最大缓存2000个文件句柄,关闭20秒内无请求的文件句柄

//文件句柄的有效时间是60秒,60秒后过期

//只有访问次数超过5次会被缓存

}

#使配置立即生效可使用如下命令: /sbin/sysctl -p

远程操作篇

ssh篇

下边这个脚本就是执行远程其他主机的脚本,ssh就可以实现,不需要安装任何包。前提是一定要做完免密登陆。

#bin/bash

Ssh -t -t wm@127.0.0.1 << remotessh —这一步就是进入远程系统

Source /etc/profile —刷新配置文件,可以跳过,这一步就是在远程系统上执行命令了

Echo “wm”

Cp /etc/a /etc/b ----这里就是你需要执行的命令,和正常的操作一样的。

Exit ----如果你执行完了,就可以推出了,一定要推出。

Remotessh ----这个命令是结束的意思,一定要有。

Pssh****篇

[rootcentos7]#yum install -y pssh

[root@centos7]#cat > iplist << EOF

> root@192.18.0.12

> root@192.18.0.21

> wm@192.168.0.21

> EOF

**218,第二百一十八个命令:**pssh 远程操作命令

[root@centos7]#pssh -h iplist -i ‘ls -l’ —”-i”这个参数是打印执行结果,不加的话只是输出对错。

pssh默认是用ssh的key验证来执行命令,如果我们要管理没有做SSHkey验证的主机,那么我们可以用-A来指定手动输入密码模式

例:

[root@centos7]#pssh -H qiuhom@192.168.0.9:413 -A ‘ls’

ansible****篇

使用 yum 安装

yum 安装是我们很熟悉的安装方式了。我们需要先安装一个epel-release包,然后再安装我们的 ansible 即可。

​ yum install epel-release -y

​ yum install ansible –y

ansible 的配置文件为/etc/ansible/ansible.cfg,ansible 有许多参数,下面我们列出一些常见的参数:

​ inventory = /etc/ansible/hosts #这个参数表示资源清单inventory文件的位置

​ library = /usr/share/ansible #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以

​ forks = 5 #并发连接数,默认为5

​ sudo_user = root #设置默认执行命令的用户

​ remote_port = 22 #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全

​ host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例

​ timeout = 60 #设置SSH连接的超时时间,单位为秒

​ log_path = /var/log/ansible.log #指定一个存储ansible日志的文件(默认不记录日志)

我们需要创建一个地址表,一般为hosts:前提是已经做好了免密登陆,默认地址表为:

[root@CentOS7 .ssh]# cat /etc/ansible/hosts

10.211.55.75

[root@CentOS7 .ssh]#

简单测试:

**219,第二百一十九个命令:**ansible shell执行远程操作

[root@CentOS7 .ssh]# ansible all -m shell -a “date”

10.211.55.75 | CHANGED | rc=0 >>

Tue Nov 30 01:14:55 EST 2021

**220,第二百二十个命令:**ansible yum远程安装包

# 在节点上安装httpd

ansible all -m yum -a “state=present name=httpd”

**221,第二百二十一个命令:**ansible service 远程启动服务

# 在节点上启动服务,并开机自启动

ansible all -m service -a ‘name=httpd state=started enabled=yes’

# 检查主机连接

ansible ‘*’ -m ping

# 执行远程命令

ansible ‘*’ -m command -a ‘uptime’

# 执行主控端脚本

ansible ‘*’ -m script -a ‘/root/test.sh’

# 执行远程主机的脚本

ansible ‘*’ -m shell -a ‘ps aux|grep zabbix’

# 类似shell

ansible ‘*’ -m raw -a “ps aux|grep zabbix|awk ‘{print $2}’”

# 创建软链接

ansible ‘*’ -m file -a “src=/etc/resolv.conf dest=/tmp/resolv.conf state=link”

# 删除软链接

ansible ‘*’ -m file -a “path=/tmp/resolv.conf state=absent”

**222,第二百二十二个命令:**ansible copy 远程拷贝文件

# 复制文件到远程服务器

ansible ‘*’ -m copy -a “src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg owner=root group=root mode=0644”

shell模块:在远程主机上执行Shell命令或脚本。

command模块:在远程主机上执行命令,类似于shell模块,但不通过Shell环境运行命令。

copy模块:将文件从控制节点复制到远程主机。

file模块:管理远程主机上的文件和目录,例如创建、删除、更改权限等操作。

template模块:使用Jinja2模板引擎根据变量生成配置文件,并将其复制到远程主机。

service模块:管理远程主机上的系统服务,例如启动、停止、重新启动等。

yum模块:在基于RHEL/CentOS的系统上管理软件包,安装、升级、删除软件包等操作。

apt模块:在基于Debian/Ubuntu的系统上管理软件包,安装、升级、删除软件包等操作。

lineinfile模块:在文本文件中插入、修改或删除特定的行。

debug模块:用于在Playbook执行期间打印调试消息。

wait_for模块:等待特定的条件在远程主机上满足,例如等待端口可用、等待文件出现等。

git模块:管理远程主机上的Git仓库,克隆、拉取、提交等操作。

docker_container模块:在Docker容器中创建和管理容器。

lineinfile模块:在文本文件中插入、修改或删除特定的行。

setup模块:收集远程主机的系统信息,例如硬件、网络接口、操作系统等。

系统密码和运行级别修改篇**:**

**1,**修改密码

第一步:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第二步:

方法一:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方法二:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方法3:将Linux 16这行的ro 改成rw

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第三步:按下 CTRL+X 进行引导启动,成功后进入该界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第四步:输入以下命令

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2,修改运行级别

运行级别的配置文件信息如下:

[root@localhost init.d]# vi /etc/inittab

# inittab is no longer used when using systemd.

#

# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

#

# Ctrl-Alt-Delete is handled by /etc/systemd/system/ctrl-alt-del.target

#

# systemd uses ‘targets’ instead of runlevels. By default, there are two main targets:

#

# multi-user.target: analogous to runlevel 3

# graphical.target: analogous to runlevel 5

#

# To set a default target, run:

#

# ln -sf /lib/systemd/system/.target /etc/systemd/system/default.target

一般情况下不需要在此文件中配置,可以直接执行命令。

如果修改目前的运行级别请执行以下内容:

修改方法为:

1.首先删除已经存在的符号链接

----------------------------------------------------------------------------------

rm /etc/systemd/system/default.target

----------------------------------------------------------------------------------

2.默认级别转换为3(文本模式)

----------------------------------------------------------------------------------

ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

----------------------------------------------------------------------------------

或者默认级别转换为5(图形模式)

----------------------------------------------------------------------------------

ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

----------------------------------------------------------------------------------

3.重启

----------------------------------------------------------------------------------

[root@centos7 ~]# reboot

yum源搭建

首先本文档讲解两种搭建方式,第一有网络环境和第二种无网络环境。

第一种**:**有网络环境

首先

进入系统执行:以下命令,获取网络源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

如果没有wget命令,只要能连接网络,一般情况下/etc/yum.repos.d/这个目录下有默认的*.repo文件,可以执行yum repolist这个命令,看看yum源是否可用,如果可用执行执行:yum -y install wget 安装,如果没有yum源,可以去网上找下yum源。复制到你创建的一个*.repo文件。在重复yum repolist命令即可。

例:

请直接去/etc/yum.repos.d/这个目录里面,编辑一个文件将以下名字为“test.repo”,并填写以下内容:以下这段

[base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=KaTeX parse error: Expected 'EOF', got '&' at position 11: releasever&̲arch=basearch&repo=os&infra=$infra

#baseurl=http://mirror.centos.org/altarch/ r e l e a s e v e r / o s / releasever/os/ releasever/os/basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

​ file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-aarch64

#released updates

[updates]

name=CentOS-$releasever - Updates

mirrorlist=http://mirrorlist.centos.org/?release=KaTeX parse error: Expected 'EOF', got '&' at position 11: releasever&̲arch=basearch&repo=updates&infra=$infra

#baseurl=http://mirror.centos.org/altarch/ r e l e a s e v e r / u p d a t e s / releasever/updates/ releasever/updates/basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

​ file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-aarch64

#additional packages that may be useful

[extras]

name=CentOS-$releasever - Extras

mirrorlist=http://mirrorlist.centos.org/?release=KaTeX parse error: Expected 'EOF', got '&' at position 11: releasever&̲arch=basearch&repo=extras&infra=$infra

#baseurl=http://mirror.centos.org/altarch/ r e l e a s e v e r / e x t r a s / releasever/extras/ releasever/extras/basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

​ file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-aarch64

enabled=1

#additional packages that extend functionality of existing packages

[centosplus]

name=CentOS-$releasever - Plus

mirrorlist=http://mirrorlist.centos.org/?release=KaTeX parse error: Expected 'EOF', got '&' at position 11: releasever&̲arch=basearch&repo=centosplus&infra=$infra

#baseurl=http://mirror.centos.org/altarch/ r e l e a s e v e r / c e n t o s p l u s / releasever/centosplus/ releasever/centosplus/basearch/

gpgcheck=1

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

​ file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-aarch64

执行:yum repolist

[root@master ~]# yum repolist

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

* base: mirrors.huaweicloud.com

* extras: mirrors.huaweicloud.com

* updates: mirrors.huaweicloud.com

repo id repo name status

base/7/aarch64 CentOS-7 - Base 7,629

docker-ce-stable/7/aarch64 Docker CE Stable - aarch64 120

extras/7/aarch64 CentOS-7 - Extras 498

updates/7/aarch64 CentOS-7 - Updates 2,369

repolist: 10,616

[root@master ~]#

网络源可以用了,我们就可以直接下载软件包了。

网络yum源很简单,只要有网就可以了。

第二种**:离线环境搭建yum源。**

离线搭建有两种方式

第一:使用iso镜像搭建

CentOS-7-x86_64-DVD-2009.iso 这个iso镜像需要提前下载好传到离线服务器上。

如果是u盘或者移动硬盘直接连接的物理服务器挂载的,直接执行:mount /dev/cdrom /test

[root@localhost ~]#mkdir /test

[root@localhost ~]# mount -o loop CentOS-7-x86_64-DVD-2009.iso /test

mount: /dev/loop0 is write-protected, mounting read-only

这个时候需要执行:

[root@localhost ~]# cd /etc/yum.repos.d/

然后执行:vim test.repo 填写以下内容:

[test]

name=test

baseurl=file:///test

enabled=1

gpgcheck=0

最后执行:如下图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第二种部署离线yum源。之所以有第二种,是因为第一种只能安装基础包,有很多软件包无法安装比如docker和nginx等。

开始安装部署吧:

首先:这种方式比较费事,依赖第一种离线搭建方式后才能部署第二种,他需要在有网络的环境里先将所有rpm包,下载到本地。然后在拷贝到离线环境然后在搭建本地yum源。

1,在有网络的环境下载rpm包:确保yum源可以使用

[root@node ~]#cd /etc/yum.repos.d/

[root@node yum.repos.d]#mkdir mirror

**223,第二百二十三个命令:**拉取yum源的包到本地

[root@node yum.repos.d]#reposync -p mirror

reposync -p这个命令会将所有的yum源的包下载到指定mirror目录里。

2,以上步骤就已经将公有云的所有的rpm包下载到本地了。

224,第二百二十四个命令将本地的rpm包制作成yum****源

3,接下来将我们的rpm包制作成yum源

只需要cd到这个mirror rpm包的目录。执行 createrepo . 这个命令即可。

createrepo如果没有这个命令,需要安装这个命令包。

执行完以上命令后,将mirror 目录所有内容包拷贝到离线环境的服务器上:拷贝到随机目录,本书拷贝到/etc/yum.repos.d/目录。

最后一步,在离线环境的机器上配置yum源文件如下图,直接复制就可以。

[root@localhost data]# cat /etc/yum.repos.d/mirror.repo

[repo_local]

name=repo for local

baseurl=file:etc/yum.repos.d/mirror

enabled=1

gpgcheck=0

[root@localhost data]#

这样,离线yum源就安装完了。

客户端使用nfs挂载yum

yum源机器:

接下来已经有一台离线机器有yum源了,其他的所有离线环境的服务器还没有,所有我要共享这个yum才可以。

首先:安装nfs

执行:yum -y install yum-utils nfs-utils nfs

然后执行: systemctl restart nfs 开启nfs服务

然后 编辑如下内容:

[root@localhost ~]# cat /etc/exports

/etc/yum.repos.d/mirror *(rw)

[root@localhost ~]#

最后执行:验证是否共享成功

**225,第二百二十五个命令:**查看nfs共享信息

[root@localhost data]# showmount -e

Export list for localhost:

/etc/yum.repos.d/mirror *

[root@localhost data]#

其他机器:

这个时候到其他的机器上,执行:

showmount -e yum源的主机地址

**226,第二百二十六个命令:**挂载nfs

例:

[root@master-test yum.repos.d]# showmount -e 127.0.0.1

Export list for 127.0.0.1:

/etc/yum.repos.d/wm *

[root@master-test yum.repos.d]#

如果没有nfs命令。那就需要搭建一个iso镜像yum源, 看下第一种的离线部署方式。

如果nfs可以看到共享目录。那就执行以下命令就可以了

[root@node ~]#mkdir /test

[root@node ~]#mount -t nfs 10.129.19.205:/etc/yum.repos.d/mirror /test

挂在成功后,最后在/etc/yum.repos.d/目录里建一个文件。

Vim /etc/yum.repos.d/test.repo

[test]

name=test

baseurl=file:///test

enabled=1

gpgcheck=0

至此yum源到这里就OK了

附加命令yum5个常用命令**:**

1 安装

yum install 全部安装

yum install package1 安装指定的安装包package1

yum groupinsall group1 安装程序组group1

2 更新和升级

yum update 全部更新

yum update package1 更新指定程序包package1

yum check-update 检查可更新的程序

yum upgrade package1 升级指定程序包package1

yum groupupdate group1 升级程序组group1

3 查找和显示

yum info package1 显示安装包信息package1

yum list 显示所有已经安装和可以安装的程序包

yum list package1 显示指定程序包安装情况package1

yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包

4 删除程序

yum remove -y package1 删除程序包package1

yum groupremove group1 删除程序组group1

yum deplist package1 查看程序package1依赖情况

5 查看yum源的所有包中是否有你想要的

Yum list | grep 包名

下载已经安装的rpm包到本地**:**

[root@master dev]# rpm -qa | grep bind

bind-export-libs-9.11.4-26.P2.el7.aarch64

[root@master dev]#

[root@master ~]# rpm -qa | grep bind

bind-export-libs-9.11.4-26.P2.el7.aarch64

[root@master ~]# ls

anaconda-ks.cfg

*[root@master ~]# yum -y reinstall --downloadonly --downloaddir=/opt bind-export-libs-9.11.4-26.P2.el7.aarch64*

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base: mirrors.huaweicloud.com

* extras: mirrors.huaweicloud.com

* updates: mirrors.huaweicloud.com

base | 3.6 kB 00:00:00

extras | 2.9 kB 00:00:00

updates | 2.9 kB 00:00:00

(1/4): base/7/aarch64/group_gz | 153 kB 00:00:05

(2/4): base/7/aarch64/primary_db | 4.9 MB 00:00:06

(3/4): extras/7/aarch64/primary_db | 246 kB 00:00:06

(4/4): updates/7/aarch64/primary_db | 2.2 MB 00:00:06

Resolving Dependencies

–> Running transaction check

—> Package bind-export-libs.aarch64 32:9.11.4-26.P2.el7 will be reinstalled

–> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================================================

Package Arch Version Repository Size

==================================================================================================================================

Reinstalling:

bind-export-libs aarch64 32:9.11.4-26.P2.el7 base 1.0 M

Transaction Summary

==================================================================================================================================

Reinstall 1 Package

Total download size: 1.0 M

Installed size: 2.9 M

Background downloading packages, then exiting:

warning: /opt/bind-export-libs-9.11.4-26.P2.el7.aarch64.rpm: Header V3 RSA/SHA256 Signature, key ID 305d49d6: NOKEY --:–:-- ETA

Public key for bind-export-libs-9.11.4-26.P2.el7.aarch64.rpm is not installed

bind-export-libs-9.11.4-26.P2.el7.aarch64.rpm | 1.0 MB 00:00:06

exiting because “Download Only” specified

[root@master ~]# ls /opt/bind-export-libs-9.11.4-26.P2.el7.aarch64.rpm

/opt/bind-export-libs-9.11.4-26.P2.el7.aarch64.rpm

[root@master ~]#

以上是不安装rpm包,只是下载

将某个rpm包的所有依赖包下载到本地

以下实例是:将所有的bind这个服务的所有依赖包下砸本地

[root@master opt]# yum install --downloadonly --downloaddir=/opt/ bind

[root@master opt]# ls

audit-libs-python-2.8.5-4.el7.aarch64.rpm geoipupdate-2.5.0-1.el7.aarch64.rpm

bind-9.11.4-26.P2.el7_9.8.aarch64.rpm libcgroup-0.41-21.el7.aarch64.rpm

bind-export-libs-9.11.4-26.P2.el7.aarch64.rpm libsemanage-python-2.5-14.el7.aarch64.rpm

bind-libs-9.11.4-26.P2.el7_9.8.aarch64.rpm policycoreutils-python-2.5-34.el7.aarch64.rpm

bind-libs-lite-9.11.4-26.P2.el7_9.8.aarch64.rpm python-IPy-0.75-6.el7.noarch.rpm

bind-license-9.11.4-26.P2.el7_9.8.noarch.rpm python-ply-3.4-11.el7.noarch.rpm

checkpolicy-2.5-8.el7.aarch64.rpm setools-libs-3.3.8-4.el7.aarch64.rpm

GeoIP-1.5.0-14.el7.aarch64.rpm

[root@master opt]#

附加rpm 6个常用命令

1,rpm -qa | grep tomcat4 查看 tomcat4 是否被安装;

2,rpm -qip example.rpm 查看 example.rpm 安装包的信息;

3,rpm -qif /bin/df 查看/bin/df 文件所在安装包的信息;

4,rpm -qlf /bin/df 查看/bin/df 文件所在安装包中的各个文件分别被安装到哪个目录下;

5,rpm -ql package1 列出package1的所有文件

6,rpm -qi package1 列出package1的安装信息

ceph篇**:**

依据Ceph-Deploy安装

**1,安装为在线安装版本为😗*13.2.10

[root@node2 ~]# ceph -v

ceph version 13.2.10 (564bdc4ae87418a232fc901524470e1a0f76d641) mimic (stable)

[root@node2 ~]#

演示环境为3台机器

**2,所有节点执行以下命令:**更改计算机名字

[root@master ~]# hostnamectl set-hostname master

[root@node1 ~]# hostnamectl set-hostname node1

[root@node2 ~]# hostnamectl set-hostname node2

**3,所有节点执行:**映射

[root@master ~]# cat /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

10.211.55.77 master

10.211.55.78 node1

10.211.55.79 node2

[root@master ~]#

**4,所有节点执行:**关闭selinux和防火墙

[root@master ~]# setenforce 0

[root@node1 ~]# setenforce 0

[root@node2 ~]# setenforce 0

[root@master ~]# systemctl stop firewalld

[root@node1 ~]# systemctl stop firewalld

[root@node2 ~]# systemctl stop firewalld

#以上可以设置禁止开机自启

**5,**在master上配置免密登陆

[root@master ~]# ssh-keygen

[root@master ~]#cd ~/.ssh/

[root@master ~]#ssh-copy-id -i id_rsa.pub root@10.211.55.77

[root@master ~]#ssh-copy-id -i id_rsa.pub root@10.211.55.78

[root@master ~]#ssh-copy-id -i id_rsa.pub root@10.211.55.79

6,全部节点搭建yum源

[root@master yum.repos.d]# cat ceph.repo

[Ceph]

name=Ceph packages for $basearch

baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch

enabled=1

gpgcheck=1.

type=rpm-md

gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[Ceph-noarch]

name=Ceph noarch packages

baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch

enabled=1

gpgcheck=1

type=rpm-md

gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[ceph-source]

name=Ceph source packages

baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS

enabled=1

gpgcheck=1

type=rpm-md

gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[root@master yum.repos.d]#

**7,所有节点执行:**新建用户

useradd cephadm

echo ‘1123’ | passwd --stdin cephadm

echo “cephadm ALL = (root) NOPASSWD:ALL” | sudo tee /etc/sudoers.d/cephadm

chmod 0440 /etc/sudoers.d/cephadm

**8,**在管理节点上以cephadm用户的身份来做各节点ssh免密登录

[root@master yum.repos.d]# su - cephadm

[cephadm@master ~]$ssh-keygen

[cephadm@master ~]$cd ~/.ssh/

[cephadm@master ~]$ssh-copy-id -i id_rsa.pub cephadm@master

[cephadm@master ~]$ssh-copy-id -i id_rsa.pub cephadm@node1

[cephadm@master ~]$ssh-copy-id -i id_rsa.pub cephadm@node2

**9,**在master上执行安装包

[root@master yum.repos.d]#yum install -y yum-utils

[root@master yum.repos.d]#yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/

[root@master yum.repos.d]#yum install --nogpgcheck -y epel-release

[root@master yum.repos.d]#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[root@master yum.repos.d]#rm -f /etc/yum.repos.d/dl.fedoraproject.org*

然后执行以下命令

[root@master yum.repos.d]#yum -y install ceph-deploy ceph-common

**10,**管理节点以cephadm用户身份在家目录建立ceph-cluster目录

[root@master yum.repos.d]#su - cephadm

[cephadm@master ~]$mkdir ceph-cluster

[cephadm@master ~]$ cd ceph-cluster

11,Mon安装

在master管理节点以cephadm用户运行 想搞3个的话 这里写全部mon节点

[cephadm@master ceph-cluster]$ ceph-deploy new master node1 node2

然后在所有节点——mon、mgr、osd都要安装

执行:

[root@master yum.repos.d]#yum install -y yum-utils

[root@master yum.repos.d]#yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/

[root@master yum.repos.d]#yum install --nogpgcheck -y epel-release

[root@master yum.repos.d]#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[root@master yum.repos.d]#rm -f /etc/yum.repos.d/dl.fedoraproject.org*

然后执行以下命令

[root@master yum.repos.d]#yum -y install ceph-deploy ceph-common

**12,**在管理节点以cephadm用户运行

[cephadm@master ceph-cluster]$ cd ceph-cluster

[cephadm@master ceph-cluster]$ ceph-deploy install --no-adjust-repos master node1 node2

然后执行以下,命令:这一步其实是在生成keyring文件

[cephadm@master ceph-cluster]$ ceph-deploy mon create-initial

[cephadm@master ceph-cluster]$ ceph-deploy admin master node1 node2

**13,**在所有节点以root的身份运行

[root@master yum.repos.d]# setfacl -m u:cephadm:r /etc/ceph/ceph.client.admin.keyring

[root@node1 yum.repos.d]# setfacl -m u:cephadm:r /etc/ceph/ceph.client.admin.keyring

[root@node2 yum.repos.d]# setfacl -m u:cephadm:r /etc/ceph/ceph.client.admin.keyring

14,Mgr安装**:**

Ceph必须要有一个mgr节点,所以我们在管理节点执行:

[root@master yum.repos.d]# su - cephadm

[cephadm@master ~]$ cd ceph-cluster

[cephadm@master ceph-cluster]$ ceph-deploy mgr create master

点查看集群的健康状态同样需要/etc/ceph/ceph.client.admin.keyring文件

[cephadm@master ceph-cluster]$ cd

[cephadm@master ~]$ ls

ceph-cluster

[cephadm@master ~]$ sudo cp ceph-cluster/{ceph.client.admin.keyring,ceph.conf} /etc/ceph/

15,查看集群信息命令

**227,第二百二十七个命令:**ceph **-**s 查看集群状态

[cephadm@master ~]$ ceph -s

cluster:

id: cc492750-c480-41ca-884f-0070006ecba2

health: HEALTH_WARN

​ 17 slow ops, oldest one blocked for 390 sec, mon.node2 has slow ops

​ OSD count 0 < osd_pool_default_size 3

​ clock skew detected on mon.node1, mon.node2

services:

mon: 3 daemons, quorum master,node1,node2

mgr: master(active)

osd: 0 osds: 0 up, 0 in

data:

pools: 0 pools, 0 pgs

objects: 0 objects, 0 B

usage: 0 B used, 0 B / 0 B avail

pgs:

[cephadm@master ~]$

16,osd安装

列出osd节点上的所有可用磁盘

在master上执行:

[cephadm@master ~]$ cd ceph-cluster/

[cephadm@master ceph-cluster]$ ls

ceph.bootstrap-mds.keyring ceph.bootstrap-osd.keyring ceph.client.admin.keyring ceph-deploy-ceph.log

ceph.bootstrap-mgr.keyring ceph.bootstrap-rgw.keyring ceph.conf ceph.mon.keyring

[cephadm@master ceph-cluster]$ ceph-deploy disk list master node1 node2

测试环境前提:每个节点创建一个空间,为osd做存储用,实验环境为5G

[cephadm@master ceph-cluster]$ceph-deploy disk zap master /dev/sdb

[cephadm@master ceph-cluster]$ceph-deploy disk zap node1 /dev/sdb

[cephadm@master ceph-cluster]$ceph-deploy disk zap node2 /dev/sdb

**17,**创建OSD

[cephadm@master ceph-cluster]$ ceph-deploy osd create master --data /dev/sdb

[cephadm@master ceph-cluster]$ ceph-deploy osd create node1 --data /dev/sdb

[cephadm@master ceph-cluster]$ ceph-deploy osd create node2 --data /dev/sdb

查看osd的状态

[cephadm@master ceph-cluster]$ ceph -s

cluster:

id: cc492750-c480-41ca-884f-0070006ecba2

health: HEALTH_OK

services:

mon: 3 daemons, quorum master,node1,node2

mgr: master(active)

osd: 3 osds: 3 up, 3 in

data:

pools: 0 pools, 0 pgs

objects: 0 objects, 0 B

usage: 3.0 GiB used, 12 GiB / 15 GiB avail

pgs:

[cephadm@master ceph-cluster]$

**18,**切回root 创建一个存储池,要想使用ceph的存储功能,必须先创建存储池

[cephadm@master ceph-cluster]$ exit

exit

[root@master ~]# ceph osd pool create mypool 64 64

pool ‘mypool’ created

[root@master ~]#

**228,第二百二十八个命令:**ceph osd pool ls 查看存储池信息

列出当前集群所有存储池

[root@master ~]# ceph osd pool ls

mypool

[root@master ~]# rados lspools

mypool

[root@master ~]#

创建上传一个文件wm.txt

[root@master ~]# echo ‘wm’ > /tmp/2m.txt

[root@master ~]# rados put wm /tmp/2m.txt --pool=mypool

[root@master ~]#

**229,第二百二十九个命令:**rados ls -p查看上传信息

查看是否上传成功

[root@master ~]# rados ls -p mypool

wm

[root@master ~]#

获取一个文件到当前文件夹下并重命名为my_test

[root@master ~]# rados ls -p mypool

wm

[root@master ~]# rados get wm ./my_wm -p mypool

[root@master ~]# ll

total 12

-rw-------. 1 root root 1116 Dec 6 04:38 anaconda-ks.cfg

-rw-r–r–. 1 root root 1219 Dec 6 04:39 initial-setup-ks.cfg

-rw-r–r–. 1 root root 3 Dec 6 10:46 my_wm

[root@master ~]# cat my_wm

wm

[root@master ~]#

**230,第二百三十个命令:**rados rm wm -p mypool删除文件

删除一个文件

[root@master ~]# rados rm wm -p mypool

[root@master ~]# rados ls -p mypool

[root@master ~]#

dashboard部署

第一步查看mgr是否正常**:**

[cephadm@master ceph-cluster]$ ceph -s

cluster:

id: cc492750-c480-41ca-884f-0070006ecba2

health: HEALTH_WARN

​ Degraded data redundancy: 22/66 objects degraded (33.333%), 18 pgs degraded, 192 pgs undersized

​ clock skew detected on mon.node2

services:

mon: 3 daemons, quorum master,node1,node2

mgr: master(active) ----这里要是激活状态

mds: cephfs-1/1/1 up {0=master=up:active}, 1 up:standby

osd: 3 osds: 3 up, 2 in

data:

pools: 2 pools, 192 pgs

objects: 22 objects, 3.5 KiB

usage: 2.0 GiB used, 8.0 GiB / 10 GiB avail

pgs: 22/66 objects degraded (33.333%)

​ 174 active+undersized

​ 18 active+undersized+degraded

[cephadm@master ceph-cluster]$

第二步**:**开启mgr

[cephadm@master~]$ ceph mgr module enable dashboard

[cephadm@master~]$

第三步**:**装自签名证书

[cephadm@master~]$ ceph dashboard create-self-signed-cert

第四步**:**创建用户名和密码

[cephadm@master~]$ ceph dashboard set-login-credentials admin admin

第五步**:**查看访问地址信息

[cephadm@master ceph-cluster]$ ceph mgr services

{

“dashboard”: “https://master:8443/”

}

[cephadm@master ceph-cluster]$

第六步**:**访问

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Cephadm**(docker安装方法:**

系统:CentOS 7.9 最小化安装;升级软件补丁;关闭SELinux和防火墙。

开始部署:主节点和其他节点提前做好免密登陆。参考:以下网址https://www.ityww.cn/1588.html

1、本地系统预配置(以下所有操作在所有节点执行)

a)配置定义Ceph所有节点HostName;

  1. hostnamectl set-hostname ceph1
  2. hostnamectl set-hostname ceph2
  3. hostnamectl set-hostname ceph3

b)配置Host文件(/etc/hosts)配置所有节点的本地解析记录;

192.168.80.245 ceph1

192.168.80.246 ceph2

192.168.80.247 ceph3

1,[root@ceph1 ~]# cat >> /etc/hosts <<EOF

> 192.168.80.245 ceph1

> 192.168.80.246 ceph2

> 192.168.80.247 ceph3

> EOF

2,[root@ceph1 ~]# cat /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.80.245 ceph1

192.168.80.246 ceph2

192.168.80.247 ceph3

3,[root@ceph2 ~]# cat >> /etc/hosts <<EOF

> 192.168.80.245 ceph1

> 192.168.80.246 ceph2

> 192.168.80.247 ceph3

> EOF

4,[root@ceph2 ~]# cat /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.80.245 ceph1

192.168.80.246 ceph2

192.168.80.247 ceph3

5,[root@ceph3 ~]# cat >> /etc/hosts <<EOF

> 192.168.80.245 ceph1

> 192.168.80.246 ceph2

> 192.168.80.247 ceph3

> EOF

6,[root@ceph3 ~]# cat /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.80.245 ceph1

192.168.80.246 ceph2

192.168.80.247 ceph3

c)配置时间同步服务(时间不同步会造成Ceph集群健康状况告警);CentOS7.9默认已安装Crondy时间同步服务;

  1. vim /etc/chrony.conf #编辑修改Chrony配置文件

# These servers were defined in the installation:

#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

server ntp.aliyum.com iburst #注释以上四行并重新配置公网NTP时间服务器地址

# Allow NTP client access from local network.

#allow 192.168.0.0/16

allow 192.168.80.0/24 #复制以上一行并根据实际情况配置允许内网访问此服务器同步时间的客户端网段地址

第一节点的时间服务器地址指向的是公网地址,其它节点的时间服务器地址指向的是第一节点的IP地址;只有第一节点需要配置允许内网,其它节点无需配置;

  1. [root@ceph1 ~]# systemctl restart chronyd.service #重启Chrony时间服务使配置生效(其它节点同样操作)
  2. [root@ceph1 ~]# systemctl status chronyd.service #查看Chrony服务状态确保服务运行正常

chronyd.service - NTP client/server

Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)

Active: active (running) since Sun 2021-03-14 22:24:35 CST; 4s ago

Docs: man:chronyd(8)

​ man:chrony.conf(5)

Process: 1663 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)

Process: 1660 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)

Main PID: 1662 (chronyd)

CGroup: /system.slice/chronyd.service

​ └─1662 /usr/sbin/chronyd

Mar 14 22:24:35 ceph1 systemd[1]: Starting NTP client/server…

Mar 14 22:24:35 ceph1 chronyd[1662]: chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK …UG)

Mar 14 22:24:35 ceph1 chronyd[1662]: Frequency 13.537 +/- 2.008 ppm read from /var/lib/chr…ift

Mar 14 22:24:35 ceph1 systemd[1]: Started NTP client/server.

Hint: Some lines were ellipsized, use -l to show in full.

3,[root@ceph1 ~]# chronyc sources #查看跟公网时间服务器通讯状态(S列符号为星号即代表通讯正常)

210 Number of sources = 1

MS Name/IP address Stratum Poll Reach LastRx Last sample

===============================================================================

^* 203.107.6.88 2 6 17 3 +358us[ +283us] +/- 18ms

4,[root@ceph1 ~]# chronyc clients #查看跟其它节点时间客户端通讯状态(Hostname列有客户端信息即代表通讯正常)

Hostname NTP Drop Int IntL Last Cmd Drop Int Last

===============================================================================

ceph2 4 0 1 - 32 0 0 - -

ceph3 4 0 1 - 18 0 0 - -

d)安装Python3:yum install -y python3

  1. [root@ceph1 ~]# yum install -y python3
  2. [root@ceph2 ~]# yum install -y python3
  3. [root@ceph3 ~]# yum install -y python3

e)安装Docker服务,最好是高版本,本文档是20以上版本

2、安装Cephadm(以下所有操作在Ceph节点1执行)

a)获取脚本:curl –silent –remote-name –location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm

以上这个命令执行不生效,可以直接访问https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm,并将脚本复制出来, 在粘贴到相应的集群中,然后执行。

  1. [root@ceph1 ~]# curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
  2. [root@ceph1 ~]# ll #查看文件下载与否(由于网络原因有时可能会没下载下来,多下载几次即可;)

total 220

-rw-------. 1 root root 1456 Jan 15 2019 anaconda-ks.cfg

-rw-r–r-- 1 root root 219622 Mar 14 22:49 cephadm

b)配置脚本可执行权限:chmod +x cephadm

  1. [root@ceph1 ~]# chmod +x cephadm

c)执行安装脚本:

./cephadm add-repo –release octopus #添加Ceph镜像源地址

cp /etc/yum.repos.d/ceph.repo{,.bak} 备份镜像源地址

sed -i ‘s#download.ceph.com#mirrors.aliyun.com/ceph#’ /etc/yum.repos.d/ceph.repo #修改镜像源为国内阿里云地址

./cephadm install

  1. [root@ceph1 ~]# ./cephadm add-repo --release octopus

Writing repo to /etc/yum.repos.d/ceph.repo…

Enabling EPEL…

  1. [root@ceph1 ~]# cp /etc/yum.repos.d/ceph.repo{,.bak}
  2. [root@ceph1 ~]# sed -i ‘s#download.ceph.com#mirrors.aliyun.com/ceph#’ /etc/yum.repos.d/ceph.repo
  3. [root@ceph1 ~]# ./cephadm install

Installing packages [‘cephadm’]…

d)检验cephadm已加入PATH环境变量(可能需要退出命令行界面重新登录)

  1. [root@ceph1 ~]# which cephadm

/usr/sbin/cephadm

3、Ceph集群部署(以下所有操作在Ceph节点1执行)

a)引导创建集群:cephadm bootstrap –mon-ip 192.168.80.245 —这个IP地址填写管理节点

  1. [root@ceph1 ~]# cephadm bootstrap --mon-ip 192.168.80.245

Creating directory /etc/ceph for ceph.conf

Verifying podman|docker is present…

Verifying lvm2 is present…

Verifying time synchronization is in place…

Unit chronyd.service is enabled and running

Repeating the final host check…

podman|docker (/usr/bin/docker) is present

systemctl is present

lvcreate is present

Unit chronyd.service is enabled and running

Host looks OK

Cluster fsid: 12837782-84d6-11eb-a474-00505622b20c

Verifying IP 192.168.80.245 port 3300 …

Verifying IP 192.168.80.245 port 6789 …

Mon IP 192.168.80.245 is in CIDR network 192.168.80.0/2

Pulling container image docker.io/ceph/ceph:v15…

Extracting ceph user uid/gid from container image…

Creating initial keys…

Creating initial monmap…

Creating mon…

Waiting for mon to start…

Waiting for mon…

mon is available

Assimilating anything we can from ceph.conf…

Generating new minimal ceph.conf…

Restarting the monitor…

Setting mon public_network…

Creating mgr…

Verifying port 9283 …

Wrote keyring to /etc/ceph/ceph.client.admin.keyring

Wrote config to /etc/ceph/ceph.conf

Waiting for mgr to start…

Waiting for mgr…

mgr not available, waiting (1/10)…

mgr not available, waiting (2/10)…

mgr not available, waiting (3/10)…

mgr not available, waiting (4/10)…

mgr is available

Enabling cephadm module…

Waiting for the mgr to restart…

Waiting for Mgr epoch 5…

Mgr epoch 5 is available

Setting orchestrator backend to cephadm…

Generating ssh key…

Wrote public SSH key to to /etc/ceph/ceph.pub

Adding key to root@localhost’s authorized_keys…

Adding host ceph1…

Deploying mon service with default placement…

Deploying mgr service with default placement…

Deploying crash service with default placement…

Enabling mgr prometheus module…

Deploying prometheus service with default placement…

Deploying grafana service with default placement…

Deploying node-exporter service with default placement…

Deploying alertmanager service with default placement…

Enabling the dashboard module…

Waiting for the mgr to restart…

Waiting for Mgr epoch 13…

Mgr epoch 13 is available

Generating a dashboard self-signed certificate…

Creating initial admin user…

Fetching dashboard port number…

Ceph Dashboard is now available at:

*URL: https://ceph1:8443/*

*User: admin*

*Password: 0m4lylrdco*

You can access the Ceph CLI with:

​ sudo /usr/sbin/cephadm shell --fsid 12837782-84d6-11eb-a474-00505622b20c -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

Please consider enabling telemetry to help improve Ceph:

​ ceph telemetry on

For more information see:

​ https://docs.ceph.com/docs/master/mgr/telemetry/

Bootstrap complete.

​ PS:该命令执行以下操作:

​ 1、在本地主机上为新集群创建monitor 和 manager daemon守护程序。

​ 2、为Ceph集群生成一个新的SSH密钥,并将其添加到root用户的/root/.ssh/authorized_keys文件中。

​ 3、将与新群集进行通信所需的最小配置文件保存到/etc/ceph/ceph.conf。

​ 4、向/etc/ceph/ceph.client.admin.keyring写入client.admin管理(特权!)secret key的副本。

​ 5、将public key的副本写入/etc/ceph/ceph.pub。

b)查看当前配置文件

  1. [root@ceph1 ~]# ll /etc/ceph/
  2. total 12
  3. -rw------- 1 root root 63 Mar 14 23:01 ceph.client.admin.keyring
  4. -rw-r–r-- 1 root root 179 Mar 14 23:01 ceph.conf
  5. -rw-r–r-- 1 root root 595 Mar 14 23:02 ceph.pub

c)查看当前拉取的镜像及容器运行状态

  1. [root@ceph1 ~]# docker image ls

REPOSITORY TAG IMAGE ID CREATED SIZE

ceph/ceph v15 5553b0cb212c 2 months ago 943MB

ceph/ceph-grafana 6.6.2 a0dce381714a 9 months ago 509MB

prom/prometheus v2.18.1 de242295e225 10 months ago 140MB

prom/alertmanager v0.20.0 0881eb8f169f 15 months ago 52.1MB

prom/node-exporter v0.18.1 e5a616e4b9cf 21 months ago 22.9MB

[root@ceph1 ~]# docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

bef4209bd542 prom/node-exporter:v0.18.1 “/bin/node_exporter …” 2 minutes ago Up 2 minutes ceph-12837782-84d6-11eb-a474-00505622b20c-node-exporter.ceph1

d062d4b9fc13 ceph/ceph-grafana:6.6.2 “/bin/sh -c 'grafana…” 2 minutes ago Up 2 minutes ceph-12837782-84d6-11eb-a474-00505622b20c-grafana.ceph1

3b81b1145e40 prom/alertmanager:v0.20.0 “/bin/alertmanager -…” 2 minutes ago Up 2 minutes ceph-12837782-84d6-11eb-a474-00505622b20c-alertmanager.ceph1

6442a8ae6fe8 prom/prometheus:v2.18.1 “/bin/prometheus --c…” 2 minutes ago Up 2 minutes ceph-12837782-84d6-11eb-a474-00505622b20c-prometheus.ceph1

839e0a93f289 ceph/ceph:v15 “/usr/bin/ceph-crash…” 2 minutes ago Up 2 minutes ceph-12837782-84d6-11eb-a474-00505622b20c-crash.ceph1

fe8d6084aad4 ceph/ceph:v15 “/usr/bin/ceph-mgr -…” 3 minutes ago Up 3 minutes ceph-12837782-84d6-11eb-a474-00505622b20c-mgr.ceph1.usdqnp

180e32d34660 ceph/ceph:v15 “/usr/bin/ceph-mon -…” 3 minutes ago Up 3 minutes ceph-12837782-84d6-11eb-a474-00505622b20c-mon.ceph1

​ PS:此时已经运行了以下组件

​ ceph-mgr ceph管理程序

​ ceph-monitor ceph监视器

​ ceph-crash 崩溃数据收集模块

​ prometheus prometheus监控组件

​ grafana 监控数据展示dashboard

​ alertmanager prometheus告警组件

​ node_exporter prometheus节点数据收集组件

d)根据初始化完成的提示使用浏览器访问Dashboard(https://ceph1-IP:8443),修改密码后登录到Ceph Dashboard;还有一个实时显示Ceph集群状态的检测页面Grafana(https://ceph1-IP:3000)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

e)启用CEPH命令:

​ e1)标准用法:默认情况下本地主机是不支持ceph基本命令的,需执行命令(cephadm shell)进入特定Shell中使用(退出exit)

  1. [root@ceph1 ~]# ceph -s

-bash: ceph: command not found

[root@ceph1 ~]# cephadm shell

Inferring fsid 12837782-84d6-11eb-a474-00505622b20c

Inferring config /var/lib/ceph/12837782-84d6-11eb-a474-00505622b20c/mon.ceph1/config

Using recent ceph image ceph/ceph@sha256:37939a3739e4e037dcf1b1f5828058d721d8c6de958212609f9e7d920b9c62bf

  1. [ceph: root@ceph1 /]# ceph -s

cluster:

id: 12837782-84d6-11eb-a474-00505622b20c

health: HEALTH_WARN

​ OSD count 0 < osd_pool_default_size 3

services:

mon: 1 daemons, quorum ceph1 (age 42m)

mgr: ceph1.usdqnp(active, since 41m)

osd: 0 osds: 0 up, 0 in

data:

pools: 0 pools, 0 pgs

objects: 0 objects, 0 B

usage: 0 B used, 0 B / 0 B avail

pgs:

  1. [ceph: root@ceph1 /]# exit

exit

  1. [root@ceph1 ~]#

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

​ e2)安装ceph-common包使本地主机支持ceph基本命令:cephadm install ceph-common

  1. [root@ceph1 ~]# cephadm install ceph-common

Installing packages [‘ceph-common’]…

  1. [root@ceph1 ~]# ceph -s

cluster:

id: 12837782-84d6-11eb-a474-00505622b20c

health: HEALTH_WARN

​ OSD count 0 < osd_pool_default_size 3

services:

mon: 1 daemons, quorum ceph1 (age 48m)

mgr: ceph1.usdqnp(active, since 47m)

osd: 0 osds: 0 up, 0 in

data:

pools: 0 pools, 0 pgs

objects: 0 objects, 0 B

usage: 0 B used, 0 B / 0 B avail

pgs:

f)将主机添加到集群中

​ f1)配置集群的公共SSH公钥至其它Ceph节点:ssh-copy-id -f -i /etc/ceph/ceph.pub root@Hostname

  1. [root@ceph1 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph2

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “/etc/ceph/ceph.pub”

The authenticity of host ‘ceph2 (192.168.80.246)’ can’t be established.

ECDSA key fingerprint is SHA256:2Eo2WLWyofiltEAs4nLUFLOcXLFD6YvsuPSDlEDUZGk.

ECDSA key fingerprint is MD5:3c:b0:5f:a8:af:6a:15:45:eb:a9:2a:b0:20:21:65:04.

Are you sure you want to continue connecting (yes/no)? yes

root@ceph2’s password:

Number of key(s) added: 1

Now try logging into the machine, with: “ssh ‘root@ceph2’”

and check to make sure that only the key(s) you wanted were added.

  1. [root@ceph1 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph3

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “/etc/ceph/ceph.pub”

The authenticity of host ‘ceph3 (192.168.80.247)’ can’t be established.

ECDSA key fingerprint is SHA256:2Eo2WLWyofiltEAs4nLUFLOcXLFD6YvsuPSDlEDUZGk.

ECDSA key fingerprint is MD5:3c:b0:5f:a8:af:6a:15:45:eb:a9:2a:b0:20:21:65:04.

Are you sure you want to continue connecting (yes/no)? yes

root@ceph3’s password:

Number of key(s) added: 1

Now try logging into the machine, with: “ssh ‘root@ceph3’”

and check to make sure that only the key(s) you wanted were added.

​ f2)添加指定新节点加入Ceph集群中:ceph orch host add Hostname

  1. [root@ceph1 ~]# ceph orch host add ceph2

Added host ‘ceph2’

  1. [root@ceph1 ~]# ceph orch host add ceph3

Added host ‘ceph3’

3,[root@ceph1 ~]# ceph orch host ls #验证查看ceph纳管的所有节点

HOST ADDR LABELS STATUS

ceph1 ceph1

ceph2 ceph2

ceph3 ceph3

添加完成后ceph会自动扩展monitor和manager到另外节点(此过程时间可能会稍久,耐心等待),另外可用命令(ceph -s)或Ceph的Ceph Dashboard页面查看添加情况

  1. [root@ceph1 ~]# ceph -s

cluster:

id: 12837782-84d6-11eb-a474-00505622b20c

health: HEALTH_WARN

​ OSD count 0 < osd_pool_default_size 3

services: #此处可看到连第一节点在内公有三个mon监控服务及两个mgr管理服务已扩展部署好

mon: 3 daemons, quorum ceph1,ceph2,ceph3 (age 50s)

mgr: ceph1.usdqnp(active, since 60m), standbys: ceph2.qopzlo

osd: 0 osds: 0 up, 0 in

task status:

data:

pools: 0 pools, 0 pgs

objects: 0 objects, 0 B

usage: 0 B used, 0 B / 0 B avail

pgs:

4、部署OSD(以下所有操作在Ceph节点1执行)

a)自动使用任何可用和未使用的存储设备(此模式因为没有显示任何信息后期可能会有异常可按需选择):ceph orch apply osd –all-available-devices

b)这里选择手工添加:

​ b1)在各节点处执行命令(lsblk)查看确定将被配置osd的设备名称

  1. [root@ceph1 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 100G 0 disk

├─sda1 8:1 0 1G 0 part /boot

└─sda2 8:2 0 99G 0 part /

sdb 8:16 0 100G 0 disk

  1. [root@ceph2 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 100G 0 disk

├─sda1 8:1 0 1G 0 part /boot

└─sda2 8:2 0 99G 0 part /

sdb 8:16 0 100G 0 disk

[root@ceph3 ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 100G 0 disk

├─sda1 8:1 0 1G 0 part /boot

└─sda2 8:2 0 99G 0 part /

sdb 8:16 0 100G 0 disk

​ b2)确定后执行命令添加:ceph orch daemon add osd Hostname:/dev/sdx

  1. [root@ceph1 ~]# ceph orch daemon add osd ceph1:/dev/sdb

Created osd(s) 0 on host ‘ceph1’

  1. [root@ceph1 ~]# ceph orch daemon add osd ceph2:/dev/sdb

Created osd(s) 1 on host ‘ceph2’

  1. [root@ceph1 ~]# ceph orch daemon add osd ceph3:/dev/sdb

Created osd(s) 2 on host ‘ceph3’

  1. [root@ceph1 ~]# ceph -s

cluster:

id: 12837782-84d6-11eb-a474-00505622b20c

health: HEALTH_OK

services:

mon: 3 daemons, quorum ceph1,ceph2,ceph3 (age 6m)

mgr: ceph2.qopzlo(active, since 6m), standbys: ceph1.usdqnp

osd: 3 osds: 3 up (since 11s), 3 in (since 11s) #不一会可查看到此处刚刚配置的osd节点都up状态及in状态表示都正确生效了

data:

pools: 1 pools, 1 pgs

objects: 0 objects, 0 B

usage: 3.0 GiB used, 297 GiB / 300 GiB avail

pgs: 1 active+clean、

检查集群健康状态:ceph -s #health参数显示OK表示Ceph环境基本部署完毕

  1. [root@ceph1 ~]# ceph -s

cluster:

id: 12837782-84d6-11eb-a474-00505622b20c

health: HEALTH_OK

services:

mon: 3 daemons, quorum ceph1,ceph2,ceph3 (age 12m)

mgr: ceph2.qopzlo(active, since 12m), standbys: ceph1.usdqnp

osd: 3 osds: 3 up (since 6m), 3 in (since 6m)

data:

pools: 1 pools, 1 pgs

objects: 0 objects, 0 B

usage: 3.0 GiB used, 297 GiB / 300 GiB avail

pgs: 1 active+clean

5,总结sgdisk****刷新问题

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

以上报错是,chronyd这个时间同步服务生效,导致集群内部时间不统一,重启下或者排查下时间问题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

以上报错,是在添加osd的时候报错,这个问题需要执行以下步骤:

1,yum install gdisk -y

2,sgdisk --zap-all /dev/sdb1 使用gdisk 命令是清除有关磁盘的历史记录。

3,ceph orch daemon add osd master:/dev/sdb —/dev/sdb 后边不要有数字,直接磁盘名字即可。

客户端挂载

**linux内核挂载:**kernel driver

**1,**启用cephfs

以下命令在master节点执行

[root@ceph-client ~]#ceph orch apply mds cephfs --placement=“3 ceph-1 ceph-2 ceph-3”

–此步骤在部署时以执行可以跳过

[root@ceph-client ~]#ceph osd pool create cephfs_data 128 --此步骤在部署时以执行可以跳过

[root@ceph-client ~]#ceph osd pool create cephfs_metadata 128 创建Metadata池

[root@ceph-client ~]#ceph fs new cephfs cephfs_metadata cephfs_data 启用pool池

231,第二百三十一个命令查看cephfs****信息

[root@master ceph]# ceph fs ls 查看cephfs

name: cephfs, metadata pool: cephfs_metadata, data pools: [mypool ]

[root@master ceph]#

以上为挂载的基础环境。

**2,**查看key

以下命令在客户端执行:

关闭防火墙和selinux

“secret=AQCi761h3NVoNBAArSiqNb/+FDTtBS0gZmH9NA==”这个参数在master节点查看如下信息:

[root@master ceph-cluster]# pwd

/home/cephadm/ceph-cluster

[root@master ceph-cluster]# cat ceph.client.admin.keyring

[client.admin]

​ key = AQCi761h3NVoNBAArSiqNb/+FDTtBS0gZmH9NA==

​ caps mds = “allow *”

​ caps mgr = “allow *”

​ caps mon = “allow *”

​ caps osd = “allow *”

[root@master ceph-cluster]#

3,然后在客户端执行挂载命令

[root@ceph-client ~]# mount -t ceph 10.211.55.77:6789:/ /mnt/ -o name=admin,secret=AQCi761h3NVoNBAArSiqNb/+FDTtBS0gZmH9NA==

[root@ceph-client ~]# df -h

Filesystem Size Used Avail Use% Mounted on

devtmpfs 712M 0 712M 0% /dev

tmpfs 730M 0 730M 0% /dev/shm

tmpfs 730M 9.3M 721M 2% /run

tmpfs 730M 0 730M 0% /sys/fs/cgroup

/dev/mapper/cl_fedora-root 41G 4.2G 37G 11% /

/dev/sda2 1014M 177M 838M 18% /boot

/dev/sda1 599M 9.1M 590M 2% /boot/efi

nf

Waiting for mgr to start…

Waiting for mgr…

mgr not available, waiting (1/10)…

mgr not available, waiting (2/10)…

mgr not available, waiting (3/10)…

mgr not available, waiting (4/10)…

mgr is available

Enabling cephadm module…

Waiting for the mgr to restart…

Waiting for Mgr epoch 5…

Mgr epoch 5 is available

Setting orchestrator backend to cephadm…

Generating ssh key…

Wrote public SSH key to to /etc/ceph/ceph.pub

Adding key to root@localhost’s authorized_keys…

Adding host ceph1…

Deploying mon service with default placement…

Deploying mgr service with default placement…

Deploying crash service with default placement…

Enabling mgr prometheus module…

Deploying prometheus service with default placement…

Deploying grafana service with default placement…

Deploying node-exporter service with default placement…

Deploying alertmanager service with default placement…

Enabling the dashboard module…

Waiting for the mgr to restart…

Waiting for Mgr epoch 13…

Mgr epoch 13 is available

Generating a dashboard self-signed certificate…

Creating initial admin user…

Fetching dashboard port number…

Ceph Dashboard is now available at:

*URL: https://ceph1:8443/*

*User: admin*

*Password: 0m4lylrdco*

You can access the Ceph CLI with:

​ sudo /usr/sbin/cephadm shell --fsid 12837782-84d6-11eb-a474-00505622b20c -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

Please consider enabling telemetry to help improve Ceph:

​ ceph telemetry on

For more information see:

​ https://docs.ceph.com/docs/master/mgr/telemetry/

Bootstrap complete.

​ PS:该命令执行以下操作:

​ 1、在本地主机上为新集群创建monitor 和 manager daemon守护程序。

​ 2、为Ceph集群生成一个新的SSH密钥,并将其添加到root用户的/root/.ssh/authorized_keys文件中。

​ 3、将与新群集进行通信所需的最小配置文件保存到/etc/ceph/ceph.conf。

​ 4、向/etc/ceph/ceph.client.admin.keyring写入client.admin管理(特权!)secret key的副本。

​ 5、将public key的副本写入/etc/ceph/ceph.pub。

b)查看当前配置文件

  1. [root@ceph1 ~]# ll /etc/ceph/
  2. total 12
  3. -rw------- 1 root root 63 Mar 14 23:01 ceph.client.admin.keyring
  4. -rw-r–r-- 1 root root 179 Mar 14 23:01 ceph.conf
  5. -rw-r–r-- 1 root root 595 Mar 14 23:02 ceph.pub

c)查看当前拉取的镜像及容器运行状态

  1. [root@ceph1 ~]# docker image ls

REPOSITORY TAG IMAGE ID CREATED SIZE

ceph/ceph v15 5553b0cb212c 2 months ago 943MB

ceph/ceph-grafana 6.6.2 a0dce381714a 9 months ago 509MB

prom/prometheus v2.18.1 de242295e225 10 months ago 140MB

prom/alertmanager v0.20.0 0881eb8f169f 15 months ago 52.1MB

prom/node-exporter v0.18.1 e5a616e4b9cf 21 months ago 22.9MB

[root@ceph1 ~]# docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

bef4209bd542 prom/node-exporter:v0.18.1 “/bin/node_exporter …” 2 minutes ago Up 2 minutes ceph-12837782-84d6-11eb-a474-00505622b20c-node-exporter.ceph1

d062d4b9fc13 ceph/ceph-grafana:6.6.2 “/bin/sh -c 'grafana…” 2 minutes ago Up 2 minutes ceph-12837782-84d6-11eb-a474-00505622b20c-grafana.ceph1

3b81b1145e40 prom/alertmanager:v0.20.0 “/bin/alertmanager -…” 2 minutes ago Up 2 minutes ceph-12837782-84d6-11eb-a474-00505622b20c-alertmanager.ceph1

6442a8ae6fe8 prom/prometheus:v2.18.1 “/bin/prometheus --c…” 2 minutes ago Up 2 minutes ceph-12837782-84d6-11eb-a474-00505622b20c-prometheus.ceph1

839e0a93f289 ceph/ceph:v15 “/usr/bin/ceph-crash…” 2 minutes ago Up 2 minutes ceph-12837782-84d6-11eb-a474-00505622b20c-crash.ceph1

fe8d6084aad4 ceph/ceph:v15 “/usr/bin/ceph-mgr -…” 3 minutes ago Up 3 minutes ceph-12837782-84d6-11eb-a474-00505622b20c-mgr.ceph1.usdqnp

180e32d34660 ceph/ceph:v15 “/usr/bin/ceph-mon -…” 3 minutes ago Up 3 minutes ceph-12837782-84d6-11eb-a474-00505622b20c-mon.ceph1

​ PS:

  • 20
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值