; Linux第六周学习博客作业 | Linux运维部落

Linux第六周学习博客作业

对第六周学习的内容进行总结

简述osi七层模型和TCP/IP五层模型

OSI(Open System Interconnect),时国际标准化组织ISO指定的网络互联模型规范,它是最标准和最科学的网络互联模型。
TCP/IP五层模型是互联网发展初始已经存在并自然发展多年的一套通用网络互联模型,它是目前使用和支持最广泛的模型,相对于OSI标准,它的支持和应用更普遍。

OSI七层模型

OSI标准定义了起个层次的网络架构,从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 数据从高级到低级层,是一个将数据加上各种协议打包并组织成特定大小的流式数据包的过程,当传输完成,又是一个从低到高层的拆包还原成源数据的过程。

  1. 物理层
    实现数字信号最终实际传输的层,对应了很多实际的物理介质和设备,如网线、同轴电缆、光纤、集线器等。
  2. 数据链路层
    数字比特信号以在此层帧的形式,使用链路地址(如以太网的MAC地址)来访问介质,并进行差错校验。工作在这一层的常见设备有:网桥、交换机等。
  3. 网络层
    这一层用到的基本协议就是IP,IP是整个网络层的基础。本层通过IP寻址来实现两个节点的连接,源端传输层送来的数据包通过本层的IP协议,选择合适的路由和交换节点,正确无误的送给目的端的传输层。工作在这一层的常见设备有:路由器、三层交换机。
  4. 传输层
    TCP、UDP协议就工作在这一层。它为上层提供了端到端(如A主机的某端口到B主机的某端口)的可靠和透明的数据传输服务,包括处理差错控制和一些设定操作控制等。它对于高层而言向下屏蔽了低层的通信细节,使得高层用户看到的是两个传输实体之间的一条可控制并且可靠的数据通路。
  5. 会话层
    是用户应用程序与网络之间的接口,为2个表示层实体提供建立和使用连接的方法。它将不同实体的表示层连接成会话,组织和协调两个会话之前的通信,对这一层次的数据交换进行管理。
  6. 表示层
    对来自应用层的数据进行解释,为其赋予相应的含义与特定的格式后传给会话层。例如对数据进行编码、格式转换 、压缩解压缩、加密解密等。
  7. 应用层
    是最接近用户的一层,直接面对用户提供服务,组织和实现用户希望在网络上完成的工作任务。应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。

    OSI_Detail.png

TCP/IP五层模型

TCP/IP五层模型相对于OSI七层模型进行了简化表示,主要是OSI高级的应用层、表示层、会话层在TCP/IP模型中统一为应用层。
它们的对应关系如下图所示:

 

OSI_TCP.png

每一层对应的常见设备:

 

OSI_TCP_Device.png

每一层对应的常用协议:

 

OSI_TCP_Protocal.png

简述iproute家族命令

在CentOS系统中,iproute的版本号与内核是一致的,因为很多iproute的设置是直接放置到内核当中的。

  1. ip命令
    命令格式 ip [OPTION] OBJECT {COMMAND | help}
    常用OBJECT有: link, addr, route, netns
    注意: OBJECT可简写,各OBJECT的子命令也可简写,接上OBJECT之后可以在后面再接上具体的OBJECT 支持的选项
    help的使用: 例如# ip link help可以显示简要的帮助信息
  • ip link
    功能:网络接口的配置
    • ip link show:显示网络接口的信息
      可以使用dev IFACE来指定接口

1
2
3
4
5
6
7
8
9
10
例如仅显示指定网卡的信息
~]$ ip link show ens33
<span class="hljs-number">2</span>: ens33: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu <span class="hljs-number">1500</span> qdisc pfifo_fast state UP mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1000</span>
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
仅显示UP状态的网卡信息
~]$ ip link show up
<span class="hljs-number">1</span>: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu <span class="hljs-number">65536</span> qdisc noqueue state UNKNOWN mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1</span>
    link/loopback <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span> brd <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>
<span class="hljs-number">2</span>: ens33: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu <span class="hljs-number">1500</span> qdisc pfifo_fast state UP mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1000</span>
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    • ip link set dev IFACE COMMAND : 对网络接口进行设置,dev可以省略

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
例如禁用某个网卡
~]<span class="hljs-comment"># ip link set lo down</span>
~]<span class="hljs-comment"># ip link show lo</span>
<span class="hljs-number">1</span>: lo: &lt;LOOPBACK&gt; mtu <span class="hljs-number">65536</span> qdisc noqueue state DOWN mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1</span>
    link/loopback <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span> brd <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>

重新启用
~]<span class="hljs-comment"># ip link show lo</span>
<span class="hljs-number">1</span>: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu <span class="hljs-number">65536</span> qdisc noqueue state UNKNOWN mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1</span>
    link/loopback <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span> brd <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>

multicast on或multicast off:启用或禁用多播功能
~]<span class="hljs-comment"># ip link set ens33 multicast off</span>
~]<span class="hljs-comment"># ip link show ens33</span>
<span class="hljs-number">2</span>: ens33: &lt;BROADCAST,UP,LOWER_UP&gt; mtu <span class="hljs-number">1500</span> qdisc pfifo_fast state UP mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1000</span>

name NAME:为网络接口重命名
~]<span class="hljs-comment"># ip link set ens33 name ens34</span>

mtu NUMBER:设置MTU的大小,默认为<span class="hljs-number">1500</span>
~]<span class="hljs-comment"># ip link set ens33 mtu 1000</span>
~]<span class="hljs-comment"># ip link show ens33</span>
<span class="hljs-number">2</span>: ens33: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu <span class="hljs-number">1000</span> qdisc pfifo_fast state UP mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1000</span>
    • ip netns : 管理网络用户空间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
实例:
ip  netns add  NAME:创建指定的netns
~]<span class="hljs-comment"># ip netns add abc</span>

ip  netns <span class="hljs-keyword">list</span>:列出所有的netns
~]<span class="hljs-comment"># ip netns list</span>
abc

ip  netns  exec  NAME  COMMAND:在指定的netns中运行命令
~]<span class="hljs-comment"># ip link show</span>
<span class="hljs-number">1</span>: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu <span class="hljs-number">65536</span> qdisc noqueue state UNKNOWN mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1</span>
    link/loopback <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span> brd <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>
<span class="hljs-number">2</span>: ens33: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu <span class="hljs-number">1500</span> qdisc pfifo_fast state UP mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1000</span>
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
<span class="hljs-number">3</span>: ens36: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu <span class="hljs-number">1500</span> qdisc pfifo_fast state UP mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1000</span>
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
~]<span class="hljs-comment"># ip link set ens33 netns abc  #将ens36移至abc网络空间</span>
~]<span class="hljs-comment"># ip link show      #此时会发现无法显示出ens36的信息了</span>
<span class="hljs-number">1</span>: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu <span class="hljs-number">65536</span> qdisc noqueue state UNKNOWN mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1</span>
    link/loopback <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span> brd <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>
<span class="hljs-number">2</span>: ens33: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu <span class="hljs-number">1500</span> qdisc pfifo_fast state UP mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1000</span>
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
~]<span class="hljs-comment"># ip netns exec abc ip link show   #在abc网络空间里运行ip link show命令</span>
<span class="hljs-number">1</span>: lo: &lt;LOOPBACK&gt; mtu <span class="hljs-number">65536</span> qdisc noop state DOWN mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1</span>
    link/loopback <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span> brd <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>
<span class="hljs-number">3</span>: ens36: &lt;BROADCAST,MULTICAST&gt; mtu <span class="hljs-number">1500</span> qdisc noop state DOWN mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1000</span>
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff

ip  netns del  NAME:删除指定的netns
~]<span class="hljs-comment"># ip netns del abc</span>
~]<span class="hljs-comment"># ip link show   #删除网络空间abc后,其内的ens36又回来了</span>
<span class="hljs-number">1</span>: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu <span class="hljs-number">65536</span> qdisc noqueue state UNKNOWN mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1</span>
    link/loopback <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span> brd <span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span>
<span class="hljs-number">2</span>: ens33: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu <span class="hljs-number">1500</span> qdisc pfifo_fast state UP mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1000</span>
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
<span class="hljs-number">3</span>: ens36: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu <span class="hljs-number">1500</span> qdisc pfifo_fast state UP mode <span class="hljs-keyword">DEFAULT</span> qlen <span class="hljs-number">1000</span>
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    • ip address COMMAND : 管理ip网络接口地址,address可简写addr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
ip addr add : 添加新的地址
~]<span class="hljs-comment"># ip addr add 192.168.1.128/24 dev ens36</span>

ip addr show : 显示接口的地址
~]<span class="hljs-comment"># ip addr show dev ens36</span>
<span class="hljs-number">3</span>: <span class="hljs-symbol">ens36:</span> &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu <span class="hljs-number">1500</span> qdisc pfifo_fast state UP qlen <span class="hljs-number">1000</span>
    link/ether <span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span>xx brd <span class="hljs-symbol">ff:</span><span class="hljs-symbol">ff:</span><span class="hljs-symbol">ff:</span><span class="hljs-symbol">ff:</span><span class="hljs-symbol">ff:</span>ff
    inet <span class="hljs-number">192.168</span>.<span class="hljs-number">244.128</span>/<span class="hljs-number">24</span> brd <span class="hljs-number">192.168</span>.<span class="hljs-number">244.255</span> scope global dynamic ens36
       valid_lft <span class="hljs-number">1189</span>sec preferred_lft <span class="hljs-number">1189</span>sec
    inet <span class="hljs-number">192.168</span>.<span class="hljs-number">1.128</span>/<span class="hljs-number">24</span> scope global ens36
       valid_lft forever preferred_lft forever
    inet6 fe80::<span class="hljs-number">7116</span><span class="hljs-symbol">:d660</span><span class="hljs-symbol">:c900</span><span class="hljs-symbol">:</span><span class="hljs-number">460</span>f/<span class="hljs-number">64</span> scope link
       valid_lft forever preferred_lft forever

ip addr delete : 删除指定接口的指定ip地址
~]<span class="hljs-comment"># ip addr del 192.168.1.128/24 dev ens36</span>
~]<span class="hljs-comment"># ip addr show dev ens36</span>
<span class="hljs-number">3</span>: <span class="hljs-symbol">ens36:</span> &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu <span class="hljs-number">1500</span> qdisc pfifo_fast state UP qlen <span class="hljs-number">1000</span>
    link/ether <span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span>xx brd <span class="hljs-symbol">ff:</span><span class="hljs-symbol">ff:</span><span class="hljs-symbol">ff:</span><span class="hljs-symbol">ff:</span><span class="hljs-symbol">ff:</span>ff
    inet <span class="hljs-number">192.168</span>.<span class="hljs-number">244.128</span>/<span class="hljs-number">24</span> brd <span class="hljs-number">192.168</span>.<span class="hljs-number">244.255</span> scope global dynamic ens36
       valid_lft <span class="hljs-number">1057</span>sec preferred_lft <span class="hljs-number">1057</span>sec
    inet6 fe80::<span class="hljs-number">7116</span><span class="hljs-symbol">:d660</span><span class="hljs-symbol">:c900</span><span class="hljs-symbol">:</span><span class="hljs-number">460</span>f/<span class="hljs-number">64</span> scope link
       valid_lft forever preferred_lft forever

ip addr flush : 清空指定接口所有的ip地址
~]<span class="hljs-comment"># ip addr flush dev ens36</span>
~]<span class="hljs-comment"># ip addr show dev ens36</span>
<span class="hljs-number">3</span>: <span class="hljs-symbol">ens36:</span> &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu <span class="hljs-number">1500</span> qdisc pfifo_fast state UP qlen <span class="hljs-number">1000</span>
    link/ether <span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span>xx brd <span class="hljs-symbol">ff:</span><span class="hljs-symbol">ff:</span><span class="hljs-symbol">ff:</span><span class="hljs-symbol">ff:</span><span class="hljs-symbol">ff:</span>ff
    • ip route COMMAND : 实现路由表管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
实例:
ip route show : 显示路由,可以指定via、src等
~]<span class="hljs-meta"># ip route show</span>
<span class="hljs-keyword">default</span> via <span class="hljs-number">192.168</span><span class="hljs-number">.31</span><span class="hljs-number">.1</span> dev ens33 proto <span class="hljs-keyword">static</span> metric <span class="hljs-number">100</span>
<span class="hljs-keyword">default</span> via <span class="hljs-number">192.168</span><span class="hljs-number">.244</span><span class="hljs-number">.2</span> dev ens36 proto <span class="hljs-keyword">static</span> metric <span class="hljs-number">101</span>
<span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.0</span>/<span class="hljs-number">24</span> dev ens36 proto kernel scope link src <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span>
<span class="hljs-number">192.168</span><span class="hljs-number">.31</span><span class="hljs-number">.0</span>/<span class="hljs-number">24</span> dev ens33 proto kernel scope link src <span class="hljs-number">192.168</span><span class="hljs-number">.31</span><span class="hljs-number">.113</span> metric <span class="hljs-number">100</span>
<span class="hljs-number">192.168</span><span class="hljs-number">.244</span><span class="hljs-number">.0</span>/<span class="hljs-number">24</span> dev ens36 proto kernel scope link src <span class="hljs-number">192.168</span><span class="hljs-number">.244</span><span class="hljs-number">.128</span> metric <span class="hljs-number">100</span>

ip  route  add  TYPE PREFIX  via GW [dev  IFACE]  [src SOURCE_IP] : 添加一个路由,src是你网卡的ip,只有你网卡的ip被设置多个时才有必要指定src。
~]<span class="hljs-meta"># ip route add 172.16.0.0/16 via 192.168.1.1 dev ens36 src 192.168.1.128</span>
~]<span class="hljs-meta"># ip route show dev ens36</span>
<span class="hljs-keyword">default</span> via <span class="hljs-number">192.168</span><span class="hljs-number">.244</span><span class="hljs-number">.2</span> proto <span class="hljs-keyword">static</span> metric <span class="hljs-number">101</span>
<span class="hljs-number">172.16</span><span class="hljs-number">.0</span><span class="hljs-number">.0</span>/<span class="hljs-number">16</span> via <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.1</span> src <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span>
<span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.0</span>/<span class="hljs-number">24</span> proto kernel scope link src <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span>
<span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.0</span>/<span class="hljs-number">24</span> proto kernel scope link src <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span> metric <span class="hljs-number">100</span>
<span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span> proto kernel scope link src <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span> metric <span class="hljs-number">100</span>
<span class="hljs-number">192.168</span><span class="hljs-number">.244</span><span class="hljs-number">.0</span>/<span class="hljs-number">24</span> proto kernel scope link src <span class="hljs-number">192.168</span><span class="hljs-number">.244</span><span class="hljs-number">.128</span> metric <span class="hljs-number">100</span>
添加默认路由
~]<span class="hljs-meta"># ip route add default via 192.168.1.1 dev ens36 src 192.168.1.128</span>
~]<span class="hljs-meta"># ip route show dev ens36</span>
<span class="hljs-keyword">default</span> via <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.1</span> src <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span>
<span class="hljs-keyword">default</span> via <span class="hljs-number">192.168</span><span class="hljs-number">.244</span><span class="hljs-number">.2</span> proto <span class="hljs-keyword">static</span> metric <span class="hljs-number">101</span>
<span class="hljs-number">172.16</span><span class="hljs-number">.0</span><span class="hljs-number">.0</span>/<span class="hljs-number">16</span> via <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.1</span> src <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span>
<span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.0</span>/<span class="hljs-number">24</span> proto kernel scope link src <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span>
<span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.0</span>/<span class="hljs-number">24</span> proto kernel scope link src <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span> metric <span class="hljs-number">100</span>
<span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span> proto kernel scope link src <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span> metric <span class="hljs-number">100</span>
<span class="hljs-number">192.168</span><span class="hljs-number">.244</span><span class="hljs-number">.0</span>/<span class="hljs-number">24</span> proto kernel scope link src <span class="hljs-number">192.168</span><span class="hljs-number">.244</span><span class="hljs-number">.128</span> metric <span class="hljs-number">100</span>

ip  route del  TYPE PRIFIX : 删除路由
~]<span class="hljs-meta"># ip route del 172.16.0.0/16 dev ens36</span>
~]<span class="hljs-meta"># ip route del default via 192.168.1.1</span>
~]<span class="hljs-meta"># ip route show dev ens36</span>
<span class="hljs-keyword">default</span> via <span class="hljs-number">192.168</span><span class="hljs-number">.244</span><span class="hljs-number">.2</span> proto <span class="hljs-keyword">static</span> metric <span class="hljs-number">100</span>
<span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.0</span>/<span class="hljs-number">24</span> proto kernel scope link src <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span>
<span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.0</span>/<span class="hljs-number">24</span> proto kernel scope link src <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span> metric <span class="hljs-number">100</span>
<span class="hljs-number">192.168</span><span class="hljs-number">.244</span><span class="hljs-number">.0</span>/<span class="hljs-number">24</span> proto kernel scope link src <span class="hljs-number">192.168</span><span class="hljs-number">.244</span><span class="hljs-number">.128</span> metric <span class="hljs-number">100</span>

ip  route get  TYPE PRIFIX : 查看单条路由
~]<span class="hljs-meta"># ip route get 192.168.1.0/24</span>
broadcast <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.0</span> dev ens36 src <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.128</span>

ip route flush : 清空某类路由
~]<span class="hljs-meta"># ip route flush dev ens36</span>
~]<span class="hljs-meta"># ip route show dev ens36</span>
~]<span class="hljs-meta"># </span>
  1. ss命令
    用来显示socket的工具
    ss [options] [ FILTER ]

1
2
3
4
5
6
7
8
9
10
11
选项:
-t:TCP协议的相关连接
-u:UDP相关的连接
-w:raw socket相关的连接
-l:监听状态的连接
-a:所有状态的连接
-n:数字格式
-p:相关的程序及其PID
-e:扩展格式信息
-m:内存用量
-o:计时器信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
显示所有TCP相关连接的状态,端口以数字形式显示
~]<span class="hljs-comment"># ss -tan</span>
State       Recv-Q Send-Q                                                Local <span class="hljs-symbol">Address:</span>Port                                                               Peer <span class="hljs-symbol">Address:</span>Port              
LISTEN      <span class="hljs-number">0</span>      <span class="hljs-number">128</span>                                                               *<span class="hljs-symbol">:</span><span class="hljs-number">22</span>                                                                            *<span class="hljs-symbol">:*</span>                  
ESTAB       <span class="hljs-number">0</span>      <span class="hljs-number">244</span>                                                  <span class="hljs-number">192.168</span>.<span class="hljs-number">31.113</span><span class="hljs-symbol">:</span><span class="hljs-number">22</span>                                                               <span class="hljs-number">192.168</span>.<span class="hljs-number">31.106</span><span class="hljs-symbol">:</span><span class="hljs-number">1945</span>              
LISTEN      <span class="hljs-number">0</span>      <span class="hljs-number">128</span>                                                              <span class="hljs-symbol">:</span><span class="hljs-symbol">:</span><span class="hljs-symbol">:</span><span class="hljs-number">22</span>                                                                           <span class="hljs-symbol">:</span><span class="hljs-symbol">:</span><span class="hljs-symbol">:*</span>    

显示UDP相关连接及相关进程的PID、内存情况,端口以数字形式显示
~]<span class="hljs-comment"># ss -unpm</span>
Recv-Q Send-Q                                                     Local <span class="hljs-symbol">Address:</span>Port                                                                    Peer <span class="hljs-symbol">Address:</span>Port              
<span class="hljs-number">0</span>      <span class="hljs-number">0</span>                                                         <span class="hljs-number">192.168</span>.<span class="hljs-number">31.113</span><span class="hljs-symbol">:</span><span class="hljs-number">48591</span>                                                                <span class="hljs-number">163.172</span>.<span class="hljs-number">177.158</span><span class="hljs-symbol">:</span><span class="hljs-number">123</span>                 <span class="hljs-symbol">users:</span>((<span class="hljs-string">"chronyd"</span>,pid=<span class="hljs-number">834</span>,fd=<span class="hljs-number">6</span>))
     <span class="hljs-symbol">skmem:</span>(r<span class="hljs-number">0</span>,rb212992,t<span class="hljs-number">0</span>,tb212992,f<span class="hljs-number">0</span>,w<span class="hljs-number">0</span>,o<span class="hljs-number">0</span>,bl<span class="hljs-number">0</span>)
<span class="hljs-number">0</span>      <span class="hljs-number">0</span>                                                         <span class="hljs-number">192.168</span>.<span class="hljs-number">31.113</span><span class="hljs-symbol">:</span><span class="hljs-number">41933</span>                                                                   <span class="hljs-number">51.15</span>.<span class="hljs-number">41.135</span><span class="hljs-symbol">:</span><span class="hljs-number">123</span>                 <span class="hljs-symbol">users:</span>((<span class="hljs-string">"chronyd"</span>,pid=<span class="hljs-number">834</span>,fd=<span class="hljs-number">7</span>))
     <span class="hljs-symbol">skmem:</span>(r<span class="hljs-number">0</span>,rb212992,t<span class="hljs-number">0</span>,tb212992,f<span class="hljs-number">0</span>,w<span class="hljs-number">0</span>,o<span class="hljs-number">0</span>,bl<span class="hljs-number">0</span>)
<span class="hljs-number">0</span>      <span class="hljs-number">0</span>                                                         <span class="hljs-number">192.168</span>.<span class="hljs-number">31.113</span><span class="hljs-symbol">:</span><span class="hljs-number">59668</span>                                                                <span class="hljs-number">221.229</span>.<span class="hljs-number">173.182</span><span class="hljs-symbol">:</span><span class="hljs-number">123</span>                 <span class="hljs-symbol">users:</span>((<span class="hljs-string">"chronyd"</span>,pid=<span class="hljs-number">834</span>,fd=<span class="hljs-number">4</span>))
     <span class="hljs-symbol">skmem:</span>(r<span class="hljs-number">0</span>,rb212992,t<span class="hljs-number">0</span>,tb212992,f<span class="hljs-number">0</span>,w<span class="hljs-number">0</span>,o<span class="hljs-number">0</span>,bl<span class="hljs-number">0</span>)
  1. nmcli
    一种新兴的网络管理命令
    格式nmcli [ OPTIONS ] OBJECT { COMMAND | help }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
device COMMAND = {status <span class="hljs-params">| show |</span> connect <span class="hljs-params">| disconnect |</span> delete <span class="hljs-params">| wifi |</span> wimax }
查看和管理网络接口
~]<span class="hljs-comment"># nmcli dev show</span>
GENERAL.<span class="hljs-symbol">DEVICE:</span>                         ens36
GENERAL.<span class="hljs-symbol">TYPE:</span>                           ethernet
GENERAL.<span class="hljs-symbol">HWADDR:</span>                         <span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span><span class="hljs-symbol">xx:</span>xx
GENERAL.<span class="hljs-symbol">MTU:</span>                            <span class="hljs-number">1500</span>
GENERAL.<span class="hljs-symbol">STATE:</span>                          <span class="hljs-number">100</span> (connected)
GENERAL.<span class="hljs-symbol">CONNECTION:</span>                     Wired connection <span class="hljs-number">1</span>
GENERAL.CON-<span class="hljs-symbol">PATH:</span>                       /org/freedesktop/NetworkManager/ActiveConnection/<span class="hljs-number">2</span>
WIRED-PROPERTIES.<span class="hljs-symbol">CARRIER:</span>               on
IP4.ADDRESS[<span class="hljs-number">1</span>]:                         <span class="hljs-number">192.168</span>.<span class="hljs-number">244.128</span>/<span class="hljs-number">24</span>
IP4.ADDRESS[<span class="hljs-number">2</span>]:                         <span class="hljs-number">192.168</span>.<span class="hljs-number">1.128</span>/<span class="hljs-number">24</span>
IP4.<span class="hljs-symbol">GATEWAY:</span>                            <span class="hljs-number">192.168</span>.<span class="hljs-number">244.2</span>
IP4.DNS[<span class="hljs-number">1</span>]:                             <span class="hljs-number">192.168</span>.<span class="hljs-number">244.2</span>
IP4.DOMAIN[<span class="hljs-number">1</span>]:                          localdomain
IP6.ADDRESS[<span class="hljs-number">1</span>]:                         fe80::<span class="hljs-number">7116</span><span class="hljs-symbol">:d660</span><span class="hljs-symbol">:c900</span><span class="hljs-symbol">:</span><span class="hljs-number">460</span>f/<span class="hljs-number">64</span>
IP6.<span class="hljs-symbol">GATEWAY:</span>                            --
~]<span class="hljs-comment"># nmcli dev status</span>
DEVICE  TYPE      STATE      CONNECTION        
ens33   ethernet  connected  ens33              
ens36   ethernet  connected  Wired connection <span class="hljs-number">1</span>
lo      loopback  unmanaged  --    
~]<span class="hljs-comment"># nmcli dev disconnect ens36</span>
Device <span class="hljs-string">'ens36'</span> successfully disconnected.
~]<span class="hljs-comment"># nmcli dev status</span>
DEVICE  TYPE      STATE         CONNECTION
ens33   ethernet  connected     ens33      
ens36   ethernet  disconnected  --        
lo      loopback  unmanaged     --

connection COMMAND = { show<span class="hljs-params">| up |</span> down <span class="hljs-params">| add |</span> edit <span class="hljs-params">| modify |</span> delete <span class="hljs-params">| reload |</span> load }
开启、禁止、管理网络连接
~]<span class="hljs-comment"># nmcli conn show</span>
NAME                UUID                                  TYPE            DEVICE
Wired connection <span class="hljs-number">1</span>  <span class="hljs-number">4</span>f39ffe<span class="hljs-number">0</span>-<span class="hljs-number">01</span>f<span class="hljs-number">0</span>-<span class="hljs-number">3</span>a93-<span class="hljs-number">970</span>c-d935f7e91f37  <span class="hljs-number">802</span>-<span class="hljs-number">3</span>-ethernet  ens36  
ens33               dd6bd51b-<span class="hljs-number">3</span>c2b-<span class="hljs-number">4</span>a39-a7ff-<span class="hljs-number">324</span>b5f7f007b  <span class="hljs-number">802</span>-<span class="hljs-number">3</span>-ethernet  ens33
~]<span class="hljs-comment"># nmcli conn down ens36</span>
~]<span class="hljs-comment"># nmcli conn up ens36</span>
使用modify添加ip地址,添加地址后,使用up刷新一次才能生效
~]<span class="hljs-comment"># nmcli modify ens36 +ipv4.addr 192.168.2.102/24</span>
~]<span class="hljs-comment"># nmcli conn up ens36</span>
  1. nmtui
    图形界面设置和管理网络

1
2
使用命令启动界面
~]<span class="hljs-comment"># nmtui</span>
nmtui.png

详细说明进行管理工具htop、vmstat等相关命令,并举例

htop

  1. 简介
    相当于监控软件TOP的增强版,htop有如下优势:
  • 相对于top更简单的操作
  • 支持图形界面和横向纵向的滚动操作以及鼠标操作
  • 杀进程时可以不用输入进程号
  1. 使用介绍
    在命令行输入htop回车即可进入htop界面

    htop1.png

下面分区域截图说明界面使用方法

 

htop2.png

左侧分别有cpu、内存、交换分区的使用情况,右边分别有Tasks进程总数、thr线程总数、当前运行的进程数、Load average(系统1分钟,5分钟,10分钟的平均负载情况)、Uptime系统运行的时间

htop3.png
  • PID:进程号
  • USER:运行此进程的用户
  • PRI:进程的优先级
  • NI:进程的NICE值,默认的为0,范围从-20到+19,正值表示低优先级,负值表示高优先级,可以进行调整
  • VIRT:进程占用的虚拟内存值
  • RES:进程占用的物理内存值
  • SHR:进程占用的共享内存值
  • S:进程的运行状况,R表示正在运行、S表示休眠,等待唤醒、Z表示僵死状态
  • %CPU:该进程占用的CPU使用率
  • %MEM:该进程占用的物理内存相对于总内存的百分比
  • TIME+:该进程启动后占用的总的CPU时间
  • COMMAND:进程启动的启动命令名称
htop4.png
快捷键 功能说明
h, ? , F1 查看htop使用说明
S, F2 htop 设定
/, F3 搜索进程
, F4 增量进程过滤器
t, F5 显示树形结构
<, >, F6 选择排序方式
[, F7 可减少nice值以提高对应进程的优先级
], F8 可增加nice值以降低对应进程的优先级
k, F9 可对进程传递信号
q, F10 结束htop
u 只显示一个给定的用户的过程
U 取消标记所有的进程
H 显示或隐藏用户线程
K 显示或隐藏内核线程
F 跟踪进程
P 按CPU 使用排序
M 按内存使用排序
T 按Time+ 使用排序
l 显示进程打开的文件
I 倒转排序顺序
s 选择某进程,按s:用strace追踪进程的系统调用

F1显示帮助信息:

 

htop5.png

鼠标点击Setup或者按下F2之后进入htop的设定页面
关于F2设定页面的说明:

  • Meters
    设定顶端的 显示信息,分为左右两侧,Left column 表示左侧的显示的信息,Right column表示右侧显示的信息,如果要新加选项,可以选择Available meters添加,F5新增到上方左侧,F6新增到上方右侧。Left column和Right column下面的选项,可以选定信息的显示方式,有LED、Bar(进度条)、Text(文本模式),可以根据个人喜好进行设置

    htop6.png
  • Display options
    htop7.png

1
选择要显示的内容,按空格 x表示显示,选择完后,按F10保存
  • Colors
    htop8.png

1
设定界面以什么颜色来显示
  • Colums
    htop9.png

1
作用是增加或取消要显示的各项内容,选择后F7(向上移动)、F8(向下移动)、F9(取消显示)、F10(保存更改)例如增加PPID(父进程号)、PGRP(进程组号),根据各人需求,显示信息

在界面下按F3或直接输入”/”就可以直接进入搜索模式,按照进程名进行搜索

 

htop10.png

搜索到的进程会用设定的颜色标记出来,方便查看

F4:过滤器
相当于模糊查找,不区分大小写,下方输入要搜索的内容后,则界面只显示搜索到的内容,更加方便查看

 

htop11.png

F5:以树形方式显示进程

 

htop12.png

F6:排序方式
按下F6后会跳转至上图界面,让您选择以什么方式进行排序,在Sort by下选择您要以什么来排序

 

htop13.png

F7,F8:调整进程nice值
F7表示减小nice值(增大优先级),F8增大nice值(减小优先级),选择某一进程,按F7或F8来增大或减小nice值,nice值范围为-20到19

 

htop14.png

F9:杀死进程
选择某一进程按F9即可杀死此进程

F10:退出htop

vmstat命令

最常见的Linux监控工具之一,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。相比top,可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
例如
~]$ vmstat <span class="hljs-number">2</span> <span class="hljs-number">1</span>
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   <span class="hljs-keyword">in</span>   cs us sy <span class="hljs-keyword">id</span> wa st
 <span class="hljs-number">1</span>  <span class="hljs-number">0</span>      <span class="hljs-number">0</span> <span class="hljs-number">15813676</span>   <span class="hljs-number">2124</span> <span class="hljs-number">195180</span>    <span class="hljs-number">0</span>    <span class="hljs-number">0</span>   <span class="hljs-number">574</span>    <span class="hljs-number">26</span>  <span class="hljs-number">421</span>  <span class="hljs-number">289</span>  <span class="hljs-number">1</span>  <span class="hljs-number">5</span> <span class="hljs-number">86</span>  <span class="hljs-number">7</span>  <span class="hljs-number">0</span>
上述应用实例中<span class="hljs-number">2</span>表示每个两秒采集一次主机的状态,<span class="hljs-number">1</span>表示只采集一次

~]$ vmstat <span class="hljs-number">2</span>
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   <span class="hljs-keyword">in</span>   cs us sy <span class="hljs-keyword">id</span> wa st
 <span class="hljs-number">1</span>  <span class="hljs-number">0</span>      <span class="hljs-number">0</span> <span class="hljs-number">15808692</span>   <span class="hljs-number">2124</span> <span class="hljs-number">195388</span>    <span class="hljs-number">0</span>    <span class="hljs-number">0</span>    <span class="hljs-number">17</span>     <span class="hljs-number">1</span>   <span class="hljs-number">41</span>   <span class="hljs-number">31</span>  <span class="hljs-number">0</span>  <span class="hljs-number">0</span> <span class="hljs-number">100</span>  <span class="hljs-number">0</span>  <span class="hljs-number">0</span>
 <span class="hljs-number">0</span>  <span class="hljs-number">0</span>      <span class="hljs-number">0</span> <span class="hljs-number">15808552</span>   <span class="hljs-number">2124</span> <span class="hljs-number">195388</span>    <span class="hljs-number">0</span>    <span class="hljs-number">0</span>     <span class="hljs-number">0</span>     <span class="hljs-number">3</span>  <span class="hljs-number">152</span>   <span class="hljs-number">87</span>  <span class="hljs-number">0</span>  <span class="hljs-number">0</span> <span class="hljs-number">100</span>  <span class="hljs-number">0</span>  <span class="hljs-number">0</span>
 <span class="hljs-number">0</span>  <span class="hljs-number">0</span>      <span class="hljs-number">0</span> <span class="hljs-number">15808552</span>   <span class="hljs-number">2124</span> <span class="hljs-number">195388</span>    <span class="hljs-number">0</span>    <span class="hljs-number">0</span>     <span class="hljs-number">0</span>     <span class="hljs-number">0</span>  <span class="hljs-number">148</span>  <span class="hljs-number">107</span>  <span class="hljs-number">0</span>  <span class="hljs-number">0</span> <span class="hljs-number">100</span>  <span class="hljs-number">0</span>  <span class="hljs-number">0</span>
 <span class="hljs-number">1</span>  <span class="hljs-number">0</span>      <span class="hljs-number">0</span> <span class="hljs-number">15808552</span>   <span class="hljs-number">2124</span> <span class="hljs-number">195388</span>    <span class="hljs-number">0</span>    <span class="hljs-number">0</span>     <span class="hljs-number">0</span>     <span class="hljs-number">0</span>  <span class="hljs-number">100</span>   <span class="hljs-number">94</span>  <span class="hljs-number">0</span>  <span class="hljs-number">0</span> <span class="hljs-number">100</span>  <span class="hljs-number">0</span>  <span class="hljs-number">0</span>
 <span class="hljs-number">0</span>  <span class="hljs-number">0</span>      <span class="hljs-number">0</span> <span class="hljs-number">15808552</span>   <span class="hljs-number">2124</span> <span class="hljs-number">195388</span>    <span class="hljs-number">0</span>    <span class="hljs-number">0</span>     <span class="hljs-number">0</span>     <span class="hljs-number">0</span>   <span class="hljs-number">89</span>   <span class="hljs-number">82</span>  <span class="hljs-number">0</span>  <span class="hljs-number">0</span> <span class="hljs-number">100</span>  <span class="hljs-number">0</span>  <span class="hljs-number">0</span>
^C
每<span class="hljs-number">2</span>秒采集一次状态,采集次数没有指定,采集会一直持续下去,直到主动去停止它

vmstat命令的显示结果中,各项参数的说明如下:

  • r 表示运行中的队列(就是说多少个进程真的分配到CPU),当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,此时主机的状态就需要警惕了。top的负载类似每秒的运行队列。如果运行队列过大,表示CPU很繁忙,一般会造成CPU使用率很高。
  • b 表示阻塞的进程。
  • swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么很可能该升级内存或者进行优化了。
  • free 空闲的物理内存的大小。
  • buff 缓冲页面间的大小,Linux系统为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的。buffers是用来元数据,例如inode、权限等等。
  • cache cache直接用来记忆我们打开的文件,给文件做缓冲,buffers与cache共同作用构成了系统的缓存机制,提高了程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。
  • si 每秒从磁盘进入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存的进程解决掉。
  • so 每秒虚拟内存进入磁盘的大小,如果这个值大于0,同样表示经常有虚拟内存数据交换。
  • bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,当有磁盘I/O操作时会有数字表示。
  • bo 块设备每秒发送的块数量。
  • in 每秒CPU的中断次数,包括时间中断
  • cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用。
  • us 用户CPU时间,一般此时间比例适当大一些表示主机在较多的执行用户进程,是比较理想的状态。
  • sy 系统CPU时间,如果太高,表示系统调用时间长。
  • id 空闲CPU时间,一般来说,id + us + sy = 100,一般可以认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
  • wt 等待I/O的CPU时间。这个指标通常意味着CPU在等待磁盘读写操作的时间,用百分比表示。wait越大则机器io性能就越差。说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈。

ps命令

使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多 的资源等等。 ps为我们提供了进程的瞬时状态,它所提供的查看结果并不动态连续的;如果想对进程实时监控,应该用 top 工具。

使用格式:ps [options] [–help]

惯常用法:

  • ps a 显示现行终端机下的所有程序,包括其他用户的程序。
  • ps -A 显示所有进程。
  • ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
  • ps -e 此参数的效果和指定”A”参数相同。
  • ps e 列出程序时,显示每个程序所使用的环境变量。
  • ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
  • ps -H 显示树状结构,表示程序间的相互关系。
  • ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
  • ps s 采用程序信号的格式显示程序状况。
  • ps S 列出程序时,包括已中断的子程序资料。
  • ps -t<终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。
  • ps u 以用户为主的格式来显示程序状况。
  • ps x 显示所有程序,不以终端机来区分。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
最常用的方法是ps -aux,然后再利用一个
管道符号导向到grep去查找特定的进程,
然后再对特定的进程进行操作。
~]$ ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          <span class="hljs-number">1</span>  <span class="hljs-number">0.0</span>  <span class="hljs-number">0.0</span> <span class="hljs-number">193700</span>  <span class="hljs-number">6820</span> ?        Ss   <span class="hljs-number">14</span>:<span class="hljs-number">34</span>   <span class="hljs-number">0</span>:<span class="hljs-number">02</span> /usr/lib/systemd/systemd --switched-root --system --deserialize <span class="hljs-number">21</span>
root          <span class="hljs-number">2</span>  <span class="hljs-number">0.0</span>  <span class="hljs-number">0.0</span>      <span class="hljs-number">0</span>     <span class="hljs-number">0</span> ?        S    <span class="hljs-number">14</span>:<span class="hljs-number">34</span>   <span class="hljs-number">0</span>:<span class="hljs-number">00</span> [kthreadd]
root          <span class="hljs-number">3</span>  <span class="hljs-number">0.0</span>  <span class="hljs-number">0.0</span>      <span class="hljs-number">0</span>     <span class="hljs-number">0</span> ?        S    <span class="hljs-number">14</span>:<span class="hljs-number">34</span>   <span class="hljs-number">0</span>:<span class="hljs-number">00</span> [ksoftirqd/<span class="hljs-number">0</span>]
root          <span class="hljs-number">5</span>  <span class="hljs-number">0.0</span>  <span class="hljs-number">0.0</span>      <span class="hljs-number">0</span>     <span class="hljs-number">0</span> ?        S&lt;   <span class="hljs-number">14</span>:<span class="hljs-number">34</span>   <span class="hljs-number">0</span>:<span class="hljs-number">00</span> [kworker/<span class="hljs-number">0</span>:<span class="hljs-number">0</span>H]
root          <span class="hljs-number">7</span>  <span class="hljs-number">0.0</span>  <span class="hljs-number">0.0</span>      <span class="hljs-number">0</span>     <span class="hljs-number">0</span> ?        S    <span class="hljs-number">14</span>:<span class="hljs-number">34</span>   <span class="hljs-number">0</span>:<span class="hljs-number">00</span> [migration/<span class="hljs-number">0</span>]
root          <span class="hljs-number">8</span>  <span class="hljs-number">0.0</span>  <span class="hljs-number">0.0</span>      <span class="hljs-number">0</span>     <span class="hljs-number">0</span> ?        S    <span class="hljs-number">14</span>:<span class="hljs-number">34</span>   <span class="hljs-number">0</span>:<span class="hljs-number">00</span> [rcu_bh]
~]$ ps -aux | grep <span class="hljs-string">"bash"</span>
sky        <span class="hljs-number">1575</span>  <span class="hljs-number">0.0</span>  <span class="hljs-number">0.0</span> <span class="hljs-number">115524</span>  <span class="hljs-number">2136</span> pts/<span class="hljs-number">0</span>    Ss   <span class="hljs-number">14</span>:<span class="hljs-number">35</span>   <span class="hljs-number">0</span>:<span class="hljs-number">00</span> -bash
sky        <span class="hljs-number">1704</span>  <span class="hljs-number">0.0</span>  <span class="hljs-number">0.0</span> <span class="hljs-number">112660</span>   <span class="hljs-number">968</span> pts/<span class="hljs-number">0</span>    S+   <span class="hljs-number">15</span>:<span class="hljs-number">26</span>   <span class="hljs-number">0</span>:<span class="hljs-number">00</span> grep --color=<span class="hljs-keyword">auto</span> bash

ps命令显示结果中各项HEAD的含义:

  • USER 用户名
  • UID 用户ID(User ID)
  • PID 进程ID(Process ID)
  • PPID 父进程的进程ID(Parent Process id)
  • SID 会话ID(Session id)
  • %CPU 进程的cpu占用率
  • %MEM 进程的内存占用率
  • VSZ 进程所使用的虚存的大小(Virtual Size)
  • RSS 进程使用的驻留集大小或者是实际内存的大小,Kbytes字节。
  • TTY 与进程关联的终端(tty)
  • STAT 进程的状态:进程状态使用字符表示的(STAT的状态码)
  • R 运行 Runnable (on run queue) 正在运行或在运行队列中等待。
  • S 睡眠 Sleeping 可中断睡眠, 在等待某个条件的形成或接收信号。
  • I 空闲 Idle
  • Z 僵死 Zombie(a defunct process) 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
  • D 不可中断睡眠 Uninterruptible sleep (ususally IO) 不能被信号唤醒, 进程必须等待直到有某种特定条件满足(例如I/O完成)。
  • T 终止 Terminate 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。
  • P 等待交换页
  • W 无驻留页 has no resident pages 没有足够的记忆体分页可分配。
  • X 死掉的进程
  • < 高优先序的进程
  • N 低优先序的进程
  • L Lock, 有记忆体分页分配并锁在记忆体内
  • s session leader,会话领导者(在它之下有子进程);比如shell下运行好多进程,这个shell就是领导者,若这个shell被关闭,其下的所有进程全部会关闭
  • l 多进程的进程(使用 CLONE_THREAD, 类似 NPTL pthreads)
    • 位于前台的进程
  • START 进程启动时间和日期
  • TIME 进程累计占用的cpu时间
  • COMMAND 由哪个命令启动的此进程,带中括号的是内核线程
  • NI Nice值
  • PRI 进程优先级编号(Priority)。0-139:实时优先级,优先级与静态相反。 100-139:静态优先级,数字越小,优先级越高,必要时可让出优先级
  • WCHAN 进程正在睡眠的内核函数名称;该函数的名称是从/root/system.map文件中获得的。
  • FLAGS 与进程相关的数字标识

kill命令

发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户可以影响其他用户的进程,非root用户只能影响自己的进程。
使用格式kill [ -s signal | -p ] [ -a ] pid

  1. 命令参数:
  • -l 后加信号编号可以列出相应信号信息,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
  • -a 当处理当前进程时,不限制命令名和进程号的对应关系
  • -p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
  • -s 指定发送信号
  • -u 指定用户
  1. 实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
~]$ <span class="hljs-built_in">kill</span> -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX    
只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。 下面是常用的信号:
HUP    1    终端断线
INT    2    中断(同 Ctrl + C)
QUIT   3    退出(同 Ctrl + \)
TERM   15   终止
KILL   9    强制终止
CONT   18   继续(与STOP相反, <span class="hljs-built_in">fg</span>/<span class="hljs-built_in">bg</span>命令)
STOP   19   暂停(同 Ctrl + Z)

~]$ <span class="hljs-built_in">kill</span> -l 1
HUP
~]$ <span class="hljs-built_in">kill</span> -l KILL
9

先用ps查找进程,然后用<span class="hljs-built_in">kill</span>杀掉
~]$ ps aux | grep <span class="hljs-string">"vim"</span>
sky        1871  0.1  0.0 151600  5340 pts/0    T    16:12   0:00 vim issue1
sky        1874  0.0  0.0 112660   972 pts/0    S+   16:13   0:00 grep --color=auto vim
~]$ <span class="hljs-built_in">kill</span> -9 1871
~]$ ps aux | grep <span class="hljs-string">"vim"</span>
sky        1880  0.0  0.0 112660   972 pts/0    S+   16:15   0:00 grep --color=auto vim
[1]+  Killed                  vim issue1

杀死指定用户所有进程
~]<span class="hljs-comment"># killall -u centos</span>
使用killall命令

使用until和while分别实现192.168.0.0/24网段内,地址是否能够ping通,ping通则输出”success!”,若ping不通则输出”fail!”


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<span class="hljs-keyword">while</span>循环实现
<span class="hljs-meta">#!/bin/bash</span>
<span class="hljs-comment">#</span>
i=1
<span class="hljs-keyword">while</span> [ <span class="hljs-variable">$i</span> -le 254 ];<span class="hljs-keyword">do</span>
    ping -c 1 -w 1 192.168.0.<span class="hljs-variable">$i</span> &amp;&gt; /dev/null
    <span class="hljs-keyword">if</span> [ $? -eq 0 ];<span class="hljs-keyword">then</span>
        <span class="hljs-built_in">echo</span> <span class="hljs-string">"192.168.0.<span class="hljs-variable">$i</span> is success!"</span>
    <span class="hljs-keyword">else</span>
        <span class="hljs-built_in">echo</span> <span class="hljs-string">"192.168.0.<span class="hljs-variable">$i</span> is fail!"</span>
    <span class="hljs-keyword">fi</span>  
    <span class="hljs-built_in">let</span> <span class="hljs-string">"i+=1"</span>
<span class="hljs-keyword">done</span>

until循环实现
<span class="hljs-meta">#!/bin/bash</span>
<span class="hljs-comment">#</span>
i=1
until [ <span class="hljs-variable">$i</span> -ge 255 ];<span class="hljs-keyword">do</span>
    ping -c 1 -w 1 192.168.0.<span class="hljs-variable">$i</span> &amp;&gt; /dev/null
    <span class="hljs-keyword">if</span> [ $? -eq 0 ];<span class="hljs-keyword">then</span>
        <span class="hljs-built_in">echo</span> <span class="hljs-string">"192.168.0.<span class="hljs-variable">$i</span> is success!"</span>
    <span class="hljs-keyword">else</span>
        <span class="hljs-built_in">echo</span> <span class="hljs-string">"192.168.0.<span class="hljs-variable">$i</span> is fail!"</span>
    <span class="hljs-keyword">fi</span>  
    <span class="hljs-built_in">let</span> <span class="hljs-string">"i+=1"</span>
<span class="hljs-keyword">done</span>

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:/91117

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1660809109@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达招商QQ  guoqibee.com  测试  万达招商  万达娱乐平台  万达娱乐招商  华宇招商  万达娱乐主管QQ  万达注册