日常运维(Ⅰ)——w、vmstat、top、sar、nload、iostat、free、ps

Linux系统监控

日常运维(Ⅰ)

一、使用w查看系统负载

  1. w 命令,查看当前系统的负载
[root@ying01 ~]# w
 11:10:36 up 14 min,  1 user,  load average: 0.00, 0.01, 0.04
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.112.1    10:58    4.00s  0.05s  0.02s w
  • 第一行从左面开始显示的信息依次为:时间,系统运行时间,登录用户数,平均负载load average。
  • 第二行开始以及下面所有的行,告诉我们:当前登录的都有哪些用户,以及他们是从哪里登录的等等。

其实,在这些信息当中,我们最应该关注的应该是第一行中的 ‘load average:’ 后面的三个数值。

  • 第一个数值表示1分钟内系统的平均负载值;(最能体现当前负载的工作情况)
  • 第二个数值表示5分钟内系统的平均负载值;
  • 第三个数值表示15分钟系统的平均负载值。

我们着重看中第一个值,它表示单位时间段内CPU活动进程数。 当然这个值越大就说明你的服务器压力越大。一般情况下这个值只要不超过服务器的cpu数量就没有关系,如果服务器cpu数量为8,那么这个值若小于8,就说明当前服务器没有压力,否则就要关注一下了。

uptime和w命令的第一行是一模一样;因为w信息丰富,我们一般用w

[root@ying01 ~]# uptime 
 12:20:47 up  1:24,  1 user,  load average: 0.00, 0.01, 0.05

2.查看CPU核心数量,cat /proc/cpuinfo

cpu核心数1

这里的processor计数从0开始,也就是说一个显示为0,二个显示为1。cpu核心数2

二、vmstat命令,监控系统的状态

[root@ying01 ~]# vmstat 
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      0 1560652   2076 177664    0    0    28     3   44   40  0  0 99  0  0

以下是各行的释义:

  • procs 显示进程的相关信息:
代号释义
r (run)表示运行或等待CPU时间片的进程数;
b (block)表示等待资源的进程数;
  • memory显示内存的相关信息:
代号释义
swpd表示切换到交换分区中的内存数量,单位为KB;
free表示当前空闲的内存数量,单位为KB;
buff表示(即将写入磁盘的)缓冲大小,单位为KB;
cache表示(从磁盘中读取的)缓存大小,单位为KB;
  • swap显示内存的交换情况:
代号释义
si表示由交换区写入内存的数据量,单位为KB;
so表示由内存写入交换区的数据量,单位为KB;
  • io显示内存的使用情况:
代号释义
bi表示从块设备读取数据的量(读磁盘),单位为KB;
bo表示从块设备写入数据的量(写磁盘),单位为KB;
  • system显示采集间隔内发生的中断次数:
代号释义
in表示在某一时间间隔内观测到的每秒设备的中断词数
cs表示每秒产生的上下文切换词数
  • cpu显示CPU的使用状态:(注:us+sy+id =100%)
代号释义
us显示用户下所花费CPU的时间百分比;
sy显示系统花费CPU的时间百分比;
id表示CPU处于空闲状态的时间百分比;
wa表示I/O等待所占用CPU的时间百分比;
st表示被偷走的CPU所占百分比(一般都为0,不用太关注)

vmstat命令的参数用法:

[root@ying01 ~]# vmstat                        //不带参数
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      0 1560936   2076 177740    0    0    14     2   33   30  0  0 100  0  0
[root@ying01 ~]# vmstat 1                      //带数字,意思是每隔1秒输出一次状态
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      0 1560992   2076 177740    0    0    14     2   33   30  0  0 100  0  0
 0  0      0 1560976   2076 177740    0    0     0     0   58   45  0  0 100  0  0
 0  0      0 1560976   2076 177740    0    0     0     0   50   44  0  0 100  0  0
 0  0      0 1560976   2076 177740    0    0     0     0   57   44  0  0 100  0  0
 0  0      0 1560976   2076 177740    0    0     0     0   44   41  0  0 100  0  0
 0  0      0 1560976   2076 177740    0    0     0     0   44   37  0  0 100  0  0
 0  0      0 1560976   2076 177740    0    0     0     0  109   76  1  0 100  0  0
^C                                             //退出按ctrl+c
[root@ying01 ~]# vmstat 1 5                    //每个1秒输出一次状态,5代表显示的次数
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      0 1561240   2076 177740    0    0    14     2   33   30  0  0 100  0  0
 0  0      0 1561224   2076 177740    0    0     0     0   72   58  0  0 100  0  0
 0  0      0 1561224   2076 177740    0    0     0     0   58   45  0  0 100  0  0
 0  0      0 1561224   2076 177740    0    0     0     0   55   50  0  0 100  0  0
 0  0      0 1561224   2076 177740    0    0     0     0   44   35  0  0 100  0  0

注意:以上所介绍的各个参数中,经常会关注r列,b列,和wa列,三列代表的含义在上边说得已经很清楚。IO部分的bi以及bo也是要经常参考的对象。如果磁盘io压力很大时,这两列的数值会比较高。另外,当si, so两列的数值比较高,并且在不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大。

三、top显示进程所占的系统资源

概念top命令用于动态监控进程所占的系统资源,每个三秒发生一次变化他的特点是把占用系统资源 CPU 内存 磁盘I/O等 最高的进程放到最前面;如下列中可以打印出很多的信息,包括系统负载(load average) ,进程数(Tasks), CPU使用情况,内存使用情况以及交换分区使用情况。

  • top 查看进程使用资源情况;
  • top -c 显示详细的进程信息,全局路径;
  • top -bn1 静态显示所有进程,列出所有信息;
  • q退出,数字1显示所有的cpu,大写字母M按内存使用排序;
  • 大写字母P按CPU使用排序;
  • top 命令直接使用;
[root@ying01 ~]# top
top - 12:35:42 up  1:39,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1875504 total,  1561388 free,   134032 used,   180084 buff/cache
KiB Swap:  3905532 total,  3905532 free,        0 used.  1555796 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND       
    1 root      20   0  128208   6840   4076 S   0.0  0.4   0:01.95 systemd       
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd      
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.02 ksoftirqd/0   
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H  
    6 root      20   0       0      0      0 S   0.0  0.0   0:00.03 kworker/u128:0
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.02 migration/0   
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh        
    9 root      20   0       0      0      0 S   0.0  0.0   0:00.36 rcu_sched     
   10 root      rt   0       0      0      0 S   0.0  0.0   0:00.02 watchdog/0    
   11 root      rt   0       0      0      0 S   0.0  0.0   0:00.01 watchdog/1    
   12 root      rt   0       0      0      0 S   0.0  0.0   0:00.00 migration/1   
   13 root      20   0       0      0      0 S   0.0  0.0   0:00.02 ksoftirqd/1   
   15 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H

top内容解释

名词释义
Tasks总共由多少进程;
running其中有几个在运行;
sleeping多少进程正在休眠;
stopped由多少个进程以及停止了;
zombie僵尸,如进程关了,下面的子进程没有结束的被称为僵尸。

注意:Top命令用于动态监控进程所占系统资源,每隔3秒变一次。 这个命令的特点是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放到最前面。

按数字1会出现另一个CPU

top - 12:47:41 up  1:51,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  94 total,   2 running,  92 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.4 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st      //CPU随时切换
KiB Mem :  1875504 total,  1559704 free,   135652 used,   180148 buff/cache
KiB Swap:  3905532 total,  3905532 free,        0 used.  1554124 avail Mem 

按大写P,产看CPU的使用情况,按照大小顺序排列。

top - 12:50:02 up  1:53,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  94 total,   2 running,  92 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.5 sy,  0.0 ni, 99.1 id,  0.0 wa,  0.0 hi,  0.5 si,  0.0 st
%Cpu1  :  0.5 us,  0.5 sy,  0.0 ni, 99.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1875504 total,  1559444 free,   135900 used,   180160 buff/cache
KiB Swap:  3905532 total,  3905532 free,        0 used.  1553868 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND        //按照大小顺序排列。
    1 root      20   0  128208   6840   4076 S   1.4  0.4   0:01.98 systemd       
  566 dbus      20   0   32824   1864   1420 S   0.9  0.1   0:00.19 dbus-daemon   
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd      
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.02 ksoftirqd/0   
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H  
    6 root      20   0       0      0      0 S   0.0  0.0   0:00.03 kworker/u128:0
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.02 migration/0   
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh      

按M查看%MEN,并以大到小排序; (%MEM 使用内存的百分比)

top - 12:53:46 up  1:57,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  94 total,   1 running,  93 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem : 1831.547 total, 1522.895 free,  132.715 used,  175.938 buff/cache
MiB Swap: 3813.996 total, 3813.996 free,    0.000 used. 1517.449 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND        //内存占比,从高到低
    1 root      20   0  128208   6840   4076 S   0.0  0.4   0:01.98 systemd       
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd      
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.02 ksoftirqd/0   
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H  
    6 root      20   0       0      0      0 S   0.0  0.0   0:00.03 kworker/u128:0
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.02 migration/0   
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh         
  • top -c 查看详细的进程信息,以及经常对于的命令(路径)

  • top -bn1 静态显示所有进程,表示了非动态打印系统资源的使用情况,在shell脚本中常用。
[root@ying01 ~]# top -bn1|tail
 1150 postfix   20   0   89760   4044   3040 S   0.0  0.2   0:00.01 qmgr
 1288 root      20   0  145744   5220   3952 S   0.0  0.3   0:00.37 sshd
 1291 root      20   0  116184   2932   1800 S   0.0  0.2   0:00.06 bash
 1689 root      20   0       0      0      0 S   0.0  0.0   0:00.68 kworker/0:0
 1692 postfix   20   0   89692   4024   3020 S   0.0  0.2   0:00.00 pickup
 1700 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kworker/0:2
 1707 root      20   0       0      0      0 S   0.0  0.0   0:00.10 kworker/0:1
 1716 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kworker/0:3
 1731 root      20   0  157624   2056   1508 R   0.0  0.1   0:00.00 top
 1732 root      20   0  108200    664    564 S   0.0  0.0   0:00.00 tail

PID之前已经写过,【参考;Linux shell基础知识(上) 6.2作业控制】 此时我们要是想杀死或者正在运行的进程,PID将是它的代号;

四、sar命令 监控系统状态

sar 命令很强大,它可以监控系统所有资源状态,比如平均负载、网卡流量、磁盘状态、内存使用等等。它不同于其他系统状态监控工具的地方在于,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。如果你系统没有安装这个命令,请使用 yum install -y sysstat命令安装。

选项释义
sar -n DEV网卡流量
sar -q系统负载
sar -b磁盘读写
sar -f /var/log/sa/saxx历史文件所在目录,每十分钟会系统抓一遍
[root@ying01 ~]# sar
Linux 3.10.0-693.el7.x86_64 (ying01) 	2018年06月09日 	_x86_64_	(2 CPU)

10时56分23秒       LINUX RESTART

11时00分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
11时10分01秒     all      0.01      0.00      0.04      0.01      0.00     99.94
11时20分01秒     all      0.01      0.00      0.03      0.00      0.00     99.95
11时30分01秒     all      0.01      0.00      0.03      0.00      0.00     99.96
11时40分01秒     all      0.01      0.01      0.07      0.08      0.00     99.83
11时50分01秒     all      0.01      0.00      0.03      0.00      0.00     99.96
12时00分01秒     all      0.01      0.00      0.03      0.00      0.00     99.96
12时10分01秒     all      0.01      0.00      0.03      0.00      0.00     99.96
12时20分01秒     all      0.01      0.00      0.03      0.00      0.00     99.97
12时30分01秒     all      0.01      0.00      0.03      0.00      0.00     99.96
12时40分01秒     all      0.01      0.00      0.04      0.00      0.00     99.94
12时50分01秒     all      0.02      0.00      0.06      0.00      0.00     99.92
13时00分01秒     all      0.02      0.00      0.06      0.00      0.00     99.92
13时10分01秒     all      0.02      0.00      0.04      0.00      0.00     99.94
平均时间:     all      0.01      0.00      0.04      0.01      0.00     99.94

  • sar -n DEV :查看网卡流量
[root@ying01 ~]# sar -n DEV
Linux 3.10.0-693.el7.x86_64 (ying01) 	2018年06月09日 	_x86_64_	(2 CPU)

10时56分23秒       LINUX RESTART

11时00分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
11时10分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11时10分01秒     ens33      0.34      0.08      0.02      0.01      0.00      0.00      0.00
11时20分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11时20分01秒     ens33      0.31      0.10      0.02      0.02      0.00      0.00      0.00
11时30分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11时30分01秒     ens33      0.33      0.05      0.02      0.00      0.00      0.00      0.00
11时40分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11时40分01秒     ens33      0.35      0.06      0.02      0.00      0.00      0.00      0.00
11时50分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11时50分01秒     ens33      0.24      0.03      0.01      0.00      0.00      0.00      0.00
12时00分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12时00分01秒     ens33      0.23      0.02      0.01      0.00      0.00      0.00      0.00
12时10分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12时10分01秒     ens33      0.28      0.02      0.02      0.00      0.00      0.00      0.00
12时20分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12时20分01秒     ens33      0.28      0.02      0.02      0.00      0.00      0.00      0.00

12时20分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
12时30分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12时30分01秒     ens33      0.41      0.12      0.03      0.02      0.00      0.00      0.00
12时40分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12时40分01秒     ens33      0.47      0.35      0.03      0.49      0.00      0.00      0.00
12时50分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12时50分01秒     ens33      0.79      1.07      0.05      1.60      0.00      0.00      0.00
13时00分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时00分01秒     ens33      0.71      0.96      0.04      1.40      0.00      0.00      0.00
13时10分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时10分01秒     ens33      0.56      0.41      0.04      0.53      0.00      0.00      0.00
平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:     ens33      0.41      0.25      0.03      0.31      0.00      0.00      0.00

这个命令把监听记录的网卡信息打印出来,每隔10分钟记录一次。以下参数是重点关注的(未列出不用关注)。

选项释义
IFACE表示网卡设备名称.
rxpck/s表示每秒进入收取的包的数量有多少,几千是正常的,如果上万就有问题;
txpck/s表示每秒发送出云的包的数量有多少。
rxkB/s表示每秒收取的数据量(单位为KB)。
txkB/S表示每秒发送的数据量
  • sar -n DEV 1 3 :每隔1秒输出一次网卡流量状态,3次后终止
root@ying01 ~]# sar -n DEV 1 3
Linux 3.10.0-693.el7.x86_64 (ying01) 	2018年06月09日 	_x86_64_	(2 CPU)

13时28分54秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
13时28分55秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时28分55秒     ens33      1.00      1.00      0.06      0.18      0.00      0.00      0.00

13时28分55秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
13时28分56秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时28分56秒     ens33      1.00      1.00      0.06      0.40      0.00      0.00      0.00

13时28分56秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
13时28分57秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时28分57秒     ens33      1.00      1.00      0.06      0.40      0.00      0.00      0.00

平均时间:     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:     ens33      1.00      1.00      0.06      0.33      0.00      0.00      0.00

  • sar -n DEV -f /var/log/sa/sa09 :选项查看某一天的网卡流量历史,后面跟文件名. 09就是当天日期
[root@ying01 ~]# sar -n DEV -f /var/log/sa/sa09
Linux 3.10.0-693.el7.x86_64 (ying01) 	2018年06月09日 	_x86_64_	(2 CPU)

10时56分23秒       LINUX RESTART

11时00分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
11时10分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11时10分01秒     ens33      0.34      0.08      0.02      0.01      0.00      0.00      0.00
11时20分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11时20分01秒     ens33      0.31      0.10      0.02      0.02      0.00      0.00      0.00

省略......

平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:     ens33      0.40      0.23      0.03      0.27      0.00      0.00      0.00

  • sar -q :查看历史负载;这个命令有助于我们查看服务器在过去某个时间的负载状况.
[root@ying01 ~]# sar -q
Linux 3.10.0-693.el7.x86_64 (ying01) 	2018年06月09日 	_x86_64_	(2 CPU)

10时56分23秒       LINUX RESTART

11时00分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
11时10分01秒         0       114      0.00      0.01      0.04         0
11时20分01秒         1       113      0.00      0.01      0.04         0
11时30分01秒         1       113      0.00      0.01      0.04         0
11时40分01秒         0       113      0.00      0.01      0.05         0
11时50分01秒         1       112      0.00      0.01      0.05         0
12时00分01秒         0       112      0.00      0.01      0.05         0
12时10分01秒         1       111      0.00      0.01      0.05         0
12时20分01秒         1       112      0.00      0.01      0.05         0
12时30分01秒         0       112      0.00      0.01      0.05         0
12时40分01秒         0       114      0.00      0.01      0.05         0
12时50分01秒         1       113      0.00      0.01      0.05         0
13时00分01秒         0       113      0.00      0.01      0.05         0
13时10分01秒         1       112      0.00      0.01      0.05         0
13时20分01秒         1       112      0.01      0.02      0.05         0
13时30分01秒         0       112      0.00      0.01      0.05         0
平均时间:         1       113      0.00      0.01      0.05         0

  • sar -b :查看磁盘负载,读写情况
[root@ying01 ~]# sar -b
Linux 3.10.0-693.el7.x86_64 (ying01) 	2018年06月09日 	_x86_64_	(2 CPU)

10时56分23秒       LINUX RESTART

11时00分01秒       tps      rtps      wtps   bread/s   bwrtn/s
11时10分01秒      0.09      0.02      0.07      0.31      0.98
11时20分01秒      0.10      0.00      0.09      0.12      1.41
11时30分01秒      0.04      0.00      0.04      0.00      0.56
11时40分01秒      1.67      1.25      0.41     36.42     12.71
11时50分01秒      0.04      0.00      0.03      0.11      0.54
12时00分01秒      0.06      0.00      0.06      0.00      0.67
12时10分01秒      0.06      0.00      0.06      0.00      0.78
12时20分01秒      0.06      0.00      0.06      0.00      0.70
12时30分01秒      0.02      0.00      0.02      0.04      0.29
12时40分01秒      0.07      0.01      0.06      0.89      0.68
12时50分01秒      0.04      0.00      0.04      0.00      0.56
13时00分01秒      0.04      0.00      0.04      0.00      0.45
13时10分01秒      0.05      0.00      0.05      0.01      0.76
13时20分01秒      0.06      0.00      0.05      0.36      0.57
13时30分01秒      0.02      0.00      0.02      0.00      0.28
平均时间:      0.16      0.09      0.08      2.55      1.46

  • sar -b 1 3 每隔1秒输出一次磁盘负载状态,3次后终止
[root@ying01 ~]# sar -b 1 3
Linux 3.10.0-693.el7.x86_64 (ying01) 	2018年06月09日 	_x86_64_	(2 CPU)

13时36分53秒       tps      rtps      wtps   bread/s   bwrtn/s
13时36分54秒      0.00      0.00      0.00      0.00      0.00
13时36分55秒      0.00      0.00      0.00      0.00      0.00
13时36分56秒      0.00      0.00      0.00      0.00      0.00
平均时间:      0.00      0.00      0.00      0.00      0.00

五、nload命令 查看网卡流量

sar虽然可以查看网卡流量,但是不够直观,还有一个更好用的工具,那就是nload。 初次使用需要安装:yum install -y nload

  • 直接输入命令nload
Device ens33 [192.168.112.136] (1/2):
===================================================================================
Incoming:                                     






                                                         Curr: 1.69 kBit/s
                                                         Avg: 2.58 kBit/s
                                                         Min: 1.69 kBit/s
                                                         Max: 4.30 kBit/s
                                                         Ttl: 1.39 MByte
Outgoing:







                                                         Curr: 10.41 kBit/s
                                                         Avg: 10.30 kBit/s
                                                         Min: 8.97 kBit/s
                                                         Max: 10.41 kBit/s
                                                         Ttl: 10.39 MByte

nload 默认分为上下两块:

  • 上半部分是:Incoming也就是进入网卡的流量,
  • 下半部分是:Outgoing,也就是从这块网卡出去的流量,

每部分都有:

  • 当前流量(Curr)
  • 平均流量(Avg)
  • 最小流量(Min)
  • 最大流量(Max)
  • 总和流量(Ttl)
  • nload -m :不显示流量图,只显示统计数据
[root@ying01 ~]# nload -m 

Device ens33 [192.168.112.136] (1/2):                                            
===================================================================================
Incoming:                                Outgoing:
Curr: 2.15 kBit/s                        Curr: 16.09 kBit/s
Avg: 2.20 kBit/s                         Avg: 15.14 kBit/s
Min: 944.00 Bit/s                        Min: 8.90 kBit/s
Max: 4.30 kBit/s                         Max: 16.12 kBit/s
Ttl: 1.44 MByte                          Ttl: 10.59 MByte

Device lo [127.0.0.1] (2/2):
===================================================================================
Incoming:                                Outgoing:
Curr: 0.00 Bit/s                         Curr: 0.00 Bit/s
Avg: 0.00 Bit/s                          Avg: 0.00 Bit/s
Min: 0.00 Bit/s                          Min: 0.00 Bit/s
Max: 0.00 Bit/s                          Max: 0.00 Bit/s
Ttl: 3.05 kByte                          Ttl: 3.05 kByte

  • nload -u M :指定单位MB
[root@ying01 ~]# nload -u M

Device ens33 [192.168.112.136] (1/2):
===================================================================================
Incoming:






                                                         Curr: 0.00 MByte/s    //都是MB
                                                         Avg: 0.00 MByte/s     
                                                         Min: 0.00 MByte/s    
                                                         Max: 0.00 MByte/s     
                                                         Ttl: 1.48 MByte       
Outgoing:







                                                         Curr: 0.00 MByte/s    //都是MB
                                                         Avg: 0.00 MByte/s
                                                         Min: 0.00 MByte/s
                                                         Max: 0.00 MByte/s
                                                         Ttl: 10.77 MByte

六、监控IO磁盘性能

6.1 iostat命令

该命令和sar共同存在于systat安装包中;

[root@ying01 ~]# iostat 
Linux 3.10.0-693.el7.x86_64 (ying01) 	2018年06月09日 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.09    0.03    0.00   99.86

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb               0.01         0.19         0.00       3584          0
sda               0.51         7.50         1.09     141971      20640
dm-0              0.00         0.05         0.00       1036          0

  • iostat 1 2,同vmstat一样表示一秒输出一次io状态,输出2次;
[root@ying01 ~]# iostat 1 2
Linux 3.10.0-693.el7.x86_64 (ying01) 	2018年06月09日 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.09    0.03    0.00   99.86

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb               0.01         0.19         0.00       3584          0
sda               0.51         7.47         1.09     141979      20643
dm-0              0.00         0.05         0.00       1036          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.50    0.00    0.00   99.50

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb               0.00         0.00         0.00          0          0
sda               0.00         0.00         0.00          0          0
dm-0              0.00         0.00         0.00          0          0

  • iostat -x;该选项将用于显示和io相关的扩展数据。
[root@ying01 ~]# iostat -x
Linux 3.10.0-693.el7.x86_64 (ying01) 	2018年06月09日 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.09    0.03    0.00   99.86

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdb               0.00     0.00    0.01    0.00     0.19     0.00    28.90     0.00    2.28    2.28    0.00   1.71   0.00
sda               0.00     0.01    0.31    0.19     7.43     1.08    33.88     0.00    5.67    5.96    5.19   1.95   0.10
dm-0              0.00     0.00    0.00    0.00     0.05     0.00    48.19     0.00    1.88    1.88    0.00   1.67   0.00

输出释义:

  • rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);
  • wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
  • rsec/s:每秒读取的扇区数;
  • wsec/:每秒写入的扇区数。
  • rKB/s:The number of read requests that were issued to the device per second;
  • wKB/s:The number of write requests that were issued to the device per second;
  • avgrq-sz 平均请求扇区的大小
  • avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。
  • await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
  • svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。
  • %util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度 。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

注意:当中的%util,指的是io等待的时间,即占用CPU的时间,是一个时间比,当达到50%,60%的时候说明磁盘的IO太差,很忙,也就有问题。

iostat命令详细介绍请参考: Linux iostat监测IO状态

6.2 iotop命令

iotop命令是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,使用iotop命令可以很方便的查看。

  • 安装 yum install -y iotop
[root@ying01 ~]# iotp
-bash: iotp: 未找到命令
[root@ying01 ~]# yum install -y iotop

  • 安装完后;这个命令主要是看IO>那一栏,看磁盘的性能
[root@ying01 ~]# iotop

Total DISK READ :	0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:	0.00 B/s | Actual DISK WRITE:       0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND             
 2019 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.03 % [kworker/0:1]
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --s~erialize 21
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    5 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]
    6 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/u128:0]
    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    8 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_bh]
    9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_sched]
   10 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
   11 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/1]
   12 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
   13 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]
   15 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/1:0H]
   17 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kdevtmpfs]
   18 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [netns]
   19 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khungtaskd]
   20 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [writeback]
   21 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kintegrityd]
   22 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [bioset]
   23 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kblockd]
   24 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [md]
  537 be/3 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % auditd
  538 be/3 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % auditd

iotop命令的选项

  • -o:只显示有io操作的进程
  • -b:批量显示,无交互,主要用作记录到文件。
  • -n NUM:显示NUM次,主要用于非交互式模式。
  • -d SEC:间隔SEC秒显示一次。
  • -p PID:监控的进程pid。
  • -u USER:监控的进程用户。
  • iotop -o:只显示有io操作的进程 ;简洁明了;
[root@damozhiying ~]# iotop -o

Total DISK READ :	0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:	0.00 B/s | Actual DISK WRITE:       0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND             
 1296 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.02 % [kworker/1:1]

七、free命令

概念: free命令可以查看当前系统的总内存大小以及使用内存的情况。

  • free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。
[root@ying01 ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1875504      135308     1446364        8768      293832     1550536
Swap:       3905532           0     3905532

  • free -m,-g 分别以MB或GB为单位打印内存使用情况。 -h 是可视化显示
[root@ying01 ~]# free                                       
              total        used        free      shared  buff/cache   available
Mem:        1875504      135308     1446364        8768      293832     1550536
Swap:       3905532           0     3905532
[root@ying01 ~]# free -m                            //以MB为单位
              total        used        free      shared  buff/cache   available
Mem:           1831         132        1412           8         286        1514
Swap:          3813           0        3813
[root@ying01 ~]# free -g                            //以GB为单位
              total        used        free      shared  buff/cache   available
Mem:              1           0           1           0           0           1
Swap:             3           0           3
[root@ying01 ~]# free -h                            //可视化,哪个单位符合运用哪个单位
              total        used        free      shared  buff/cache   available
Mem:           1.8G        131M        1.4G        8.6M        286M        1.5G
Swap:          3.7G          0B        3.7G

以下是第一行,各列的释义(后两项是行的释义):

名称释义
total内存总数;tatal=used+free+buff/cache
used已经使用的内存数;
free空闲的内存数;
shared当前已经废弃不用;
buff/cache分配给buffer和cache的内存总共有多大;
available系统可使用内存大小,avaliable包含free和buffer/cache剩余部分。
Mem内存的使用情况
Swap交换分区使用情况

buff/cache 的区别:

  • 数据经过CPU计算,即将要写入磁盘,这时用的内存为buffer;
  • CPU要计算时,需要把数据从磁盘中读出来,临时放在内存中,这部分内存就是cache。

八、ps命令 监控系统状态

ps命令是显示瞬间行程 (process) 的动态

ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义:

  • -A 列出所有的行程
  • -w 显示加宽可以显示较多的资讯
  • -au 显示较详细的资讯
  • -aux 显示所有包含其他使用者的行程
  • 命令ps aux :显示所有包含其他使用者的行程
[root@ying01 ~]#  ps aux |head -1
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
[root@ying01 ~]#  ps aux |tail -5
root      1234  0.0  0.2 145744  5228 ?        Ss   23:37   0:00 sshd: root@pts/0
root      1238  0.0  0.1 116184  2888 pts/0    Ss   23:37   0:00 -bash
root      1279  0.0  0.0      0     0 ?        S    23:41   0:00 [kworker/1:2]
root      1298  0.0  0.0 151104  1852 pts/0    R+   23:45   0:00 ps aux
root      1299  0.0  0.0 108200   676 pts/0    S+   23:45   0:00 tail -5

ps aux输出释义: 名词 | 释义 ---|--- USER| 行程拥有者 PID:|pid %CPU| 占用的 CPU 使用率 %MEM| 占用的记忆体使用率 VSZ| 占用的虚拟记忆体大小 RSS| 占用的记忆体大小 TTY|终端的次要装置号码 (minor device number of tty) STAT|该行程的状态(下表) START| 行程开始时间 TIME: |执行的时间 COMMAND|所执行的指令

STAT :表示进程的状态,进程状态分为以下几种(不要求记住,但要大致了解)

名称释义
D不能中断的进程
Rrun状态的进程
Ssleep状态的进程
T暂停的进程
Z僵尸进程
<高优先级进程
N低优先级进程
L内存中被锁了内存分页
s主进程
l多线程进程
+前台进程
  • PID :进程的ID,这个ID很有用,在linux中内核管理进程就得靠pid来识别和管理某一个进程;/proc下的数字目录都是进程文件;
[root@ying01 ~]# ls -l /proc  |head
总用量 0
dr-xr-xr-x.  9 root    root                  0 6月   9 23:36 1
dr-xr-xr-x.  9 root    root                  0 6月   9 23:36 10
dr-xr-xr-x.  9 root    root                  0 6月   9 23:36 11
dr-xr-xr-x.  9 root    root                  0 6月   9 23:37 1153
dr-xr-xr-x.  9 postfix postfix               0 6月   9 23:37 1159
dr-xr-xr-x.  9 postfix postfix               0 6月   9 23:37 1160
dr-xr-xr-x.  9 root    root                  0 6月   9 23:36 12
dr-xr-xr-x.  9 root    root                  0 6月   9 23:37 1234
dr-xr-xr-x.  9 root    root                  0 6月   9 23:37 1238

  • ps aux |grep top 查看一个进程是否在运行,示例如下
[root@ying01 ~]#  ps aux |grep top
root      1338  0.0  0.0 112720   984 pts/0    S+   23:57   0:00 grep --color=auto top
[root@ying01 ~]#  ps aux |grep tail
root      1340  0.0  0.0 112720   984 pts/0    S+   23:57   0:00 grep --color=auto tail

九、查看网络状态netstat

netstat命令用来打印网络连接状况、系统所开放端口、路由表等信息

  • 打印当前系统启动哪些端口
[root@ying01 ~]# netstat -lnp |head -15
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      928/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1153/master         
tcp6       0      0 :::22                   :::*                    LISTEN      928/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1153/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           578/chronyd         
udp6       0      0 ::1:323                 :::*                                578/chronyd         
raw6       0      0 :::58                   :::*                    7           623/NetworkManager  
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     11519    1/systemd            /run/lvm/lvmpolld.socket
unix  2      [ ACC ]     STREAM     LISTENING     14080    1/systemd            /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     18181    1153/master          private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     18184    1153/master          private/rewrite

  • netstat -an :打印网络链接情况
[root@ying01 ~]# netstat -an |head -15
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0     52 192.168.112.136:22      192.168.112.1:50873     ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
udp        0      0 127.0.0.1:323           0.0.0.0:*                          
udp6       0      0 ::1:323                 :::*                               
raw6       0      0 :::58                   :::*                    7          
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     11519    /run/lvm/lvmpolld.socket
unix  2      [ ACC ]     STREAM     LISTENING     14080    /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     18181    private/tlsmgr
  • netstat -lntp 只看出tcp的,不包含socket
[root@ying01 ~]# netstat -lntp
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      928/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1153/master         
tcp6       0      0 :::22                   :::*                    LISTEN      928/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1153/master    
  • netstat -lnup 只看udp
[root@ying01 ~]# netstat -lnup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 127.0.0.1:323           0.0.0.0:*                           578/chronyd         
udp6       0      0 ::1:323                 :::*                                578/chronyd      
  • ss -an 和nestat异曲同工,不显示进程名字
[root@ying01 ~]# ss -an |head 
Netid  State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
nl     UNCONN     0      0         0:0                      *                   
nl     UNCONN     0      0         0:1409286767             *                   
nl     UNCONN     0      0         0:1409286767             *                   
nl     UNCONN     768    0         4:0                      *                   
nl     UNCONN     4352   0         4:1401                   *                   
nl     UNCONN     0      0         6:0                      *                   
nl     UNCONN     0      0         7:0                      *                   
nl     UNCONN     0      0         7:1                      *                   
nl     UNCONN     0      0         7:573                    *                
  • 查看并发,有多少客户端在连接你
[root@ying01 ~]# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
LISTEN 	 4
ESTABLISHED 	 1

注意:ESTABLISHED 45 这是一个很重要的参数,必须在1000以内.客户端同时和你的服务器通信。

十、Linux下抓包工具

10.1 tcpdump工具

tcpdump命令是一款sniffer工具,它可以打印所有经过网络接口的数据包的头信息;如果没有tcpdump 这个命令,需要用yum install -y tcpdump命令去安装一下。

它的选项很多,实际需要掌握以下几个;

  • -i 选项后面跟设备名称,如果你想抓ens33网卡的包,后面则要跟eens33。
  • -nn选项的作用是让第三列和第四列显示成IP+端口号的形式,如果不加-nn则显示的是主机名+服务名称。
  • -c选项,指定抓包数量。
[root@ying01 ~]# tcpdump -nn -i ens33

........

00:24:08.125075 IP 192.168.112.136.22 > 192.168.112.1.50873: Flags [P.], seq 232480:232660, ack 53, win 318, length 180
00:24:08.125265 IP 192.168.112.136.22 > 192.168.112.1.50873: Flags [P.], seq 232660:232936, ack 53, win 318, length 276
00:24:08.125406 IP 192.168.112.1.50873 > 192.168.112.136.22: Flags [.], ack 232936, win 1831, length 0
00:24:08.125420 IP 192.168.112.136.22 > 192.168.112.1.50873: Flags [P.], seq 232936:233116, ack 53, win 318, length 180
00:24:08.125577 IP 192.168.112.136.22 > 192.168.112.1.50873: Flags [P.], seq 233116:233392, ack 53, win 318, length 276
00:24:08.125692 IP 192.168.112.1.50873 > 192.168.112.136.22: Flags [.], ack 233392, win 1829, length 0
00:24:08.125705 IP 192.168.112.136.22 > 192.168.112.1.50873: Flags [P.], seq 233392:233572, ack 53, win 318, length 180
00:24:08.125808 IP 192.168.112.136.22 > 192.168.112.1.50873: Flags [P.], seq 233572:233848, ack 53, win 318, length 276
00:24:08.125908 IP 192.168.112.1.50873 > 192.168.112.136.22: Flags [.], ack 233848, win 1827, length 0
00:24:08.125922 IP 192.168.112.136.22 > 192.168.112.1.50873: Flags [P.], seq 233848:234028, ack 53, win 318, length 180
00:24:08.126032 IP 192.168.112.1.50873 > 192.168.112.136.22: Flags [P.], seq 53:105, ack 233848, win 1827, length 52
00:24:08.126054 IP 192.168.112.136.22 > 192.168.112.1.50873: Flags [P.], seq 234028:234304, ack 105, win 318, length 276
^C
1542 packets captured
1542 packets received by filter
0 packets dropped by kernel
[root@ying01 ~]# 

有以下几种常见用法

  • tcpdump -nn -i ens33 port 22 //只抓22端口的包
  • tcpdump host 192.168.x.x //抓取指定ip的包
  • tcpdump -nn -i ens33 tcp and not port 22 //指定抓tcp的包,但是不要22端口的
  • tcpdump -nn -i ens33 port 22 and port 53 //只抓22和53端口的包
  • tcpdump -nn -i ens33 -c 10 -i ens33 -w /tmp/1.cap //保存10次抓包到/tmp/1.cap,无法用cat查看
  • tcpdump -r /tmp/test.cap //读取抓包文件
[root@ying01 ~]# tcpdump -nn -i ens33 -c 10 -i ens33 -w /tmp/1.cap
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
10 packets captured
10 packets received by filter
0 packets dropped by kernel
[root@ying01 ~]# file /tmp/1.cap 
/tmp/1.cap: tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 262144)

  • tcpdump -r 1.cap 查看指定数据包内容

注: 1.cap内容无法使用cat命令查看,但是可使用tcpdump -r命令查看

[root@ying01 ~]# tcpdump -r /tmp/1.cap 
reading from file /tmp/1.cap, link-type EN10MB (Ethernet)
00:29:20.494233 IP ying01.ssh > 192.168.112.1.50873: Flags [P.], seq 1861314352:1861314500, ack 1400556852, win 318, length 148
00:29:20.494429 IP 192.168.112.1.50873 > ying01.ssh: Flags [.], ack 148, win 2047, length 0
00:29:20.819315 ARP, Request who-has gateway tell 192.168.112.1, length 46
00:29:20.819333 IP 192.168.112.1 > igmp.mcast.net: igmp v3 report, 1 group record(s)
00:29:20.819354 IP6 fe80::28c5:a56c:af8d:aa14 > ff02::16: HBH ICMP6, multicast listener report v2, 1 group record(s), length 28
00:29:22.266312 ARP, Request who-has gateway tell 192.168.112.1, length 46
00:29:22.818823 ARP, Request who-has gateway tell 192.168.112.1, length 46
00:29:23.819423 ARP, Request who-has gateway tell 192.168.112.1, length 46
00:29:25.266744 ARP, Request who-has gateway tell 192.168.112.1, length 46
00:29:25.818396 ARP, Request who-has gateway tell 192.168.112.1, length 46

10.2 wireshark工具

Wireshark目前世界上最受欢迎的协议分析软件,利用它可将捕获到的各种各样协议的网络二进制数据流翻译为人们容易读懂和理解的文字和图表等形式,极大地方便了对网络活动的监测分析和教学实验。它有十分丰富和强大的统计分析功能,可在Windows,Linux 和UNIX等系统上运行。

先安装wireshark

[root@ying01 ~]# yum install -y wireshark

查看指定网卡80端口的1个web服务的访问情况(类似于web的访问日志)

[root@ying01 ~]# tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri" 

以下命令可以抓取mysql的查询

[root@ying01 ~]# tshark -n -i eth1 -R 'mysql.query' -T fields -e "ip.src" -e "mysql.query"
tshark: -R without -2 is deprecated. For single-pass filtering use -Y.
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth1'
tshark: The capture session could not be initiated (No such device exists).
Please check to make sure you have sufficient permissions, and that you have the proper interface or pipe specified.
0 packets captured

另一种方法效果也是一样;

[root@ying01 ~]# tshark -i eth1 port 3307  -d tcp.port==3307,mysql -z "proto,colinfo,mysql.query,mysql.query"
Running as user "root" and group "root". This could be dangerous.
Capturing on 'eth1'
tshark: The capture session could not be initiated (No such device exists).
Please check to make sure you have sufficient permissions, and that you have the proper interface or pipe specified.
0 packets captured

以下命令可以抓取指定类型的MySQL查询

tshark -n -i eth1 -R 'mysql matches "SELECT|INSERT|DELETE|UPDATE"' -T fields -e "ip.src" -e "mysql.query"

统计http的状态

tshark -n -q -z http,stat, -z http,tree

tshark 增加时间标签

tshark  -t  ad
tshark  -t  a

参考文章:

tshark功能

tshark命令行参数

tcp三次握手四次挥手

简述TCP的三次握手过程

面试题:三次握手、四次握手内容整理


十一、Linux网络相关

11.1 网卡相关设置
  • ifconfig查看网卡IP

如果系统没有ifconfig命令,可以使用yum install -y net-tools) Linux上有多个网卡,而只想重启某一个网卡的话,可以使用这个命令:

[root@ying01 ~]# ifconfig   

[root@ying01 ~]# ip add       //也可以查看但是有点乱
  • 网卡的启动、关闭和重启
目标命令
开启网卡ifup ens33
关闭网卡ifdown ens33
重启网卡ifdown ens33 && ifup ens33

注意:如果我们远程登录服务器,当使用ifdown ens33这个命令的时候,很有可能后面的命令ifup eth33不会被运行,这样导致我们断网而无法连接服务器,所以请尽量使用 service network restart 这个命令来重启网卡。

11.2 添加虚拟网卡

第一步 先按照正在使用的网卡,复制一个

[root@ying01 ~]# cd /etc/sysconfig/network-scripts/
[root@ying01 network-scripts]# ls
ifcfg-ens33  ifdown-isdn      ifdown-tunnel  ifup-isdn    ifup-Team
ifcfg-lo     ifdown-post      ifup           ifup-plip    ifup-TeamPort
ifdown       ifdown-ppp       ifup-aliases   ifup-plusb   ifup-tunnel
ifdown-bnep  ifdown-routes    ifup-bnep      ifup-post    ifup-wireless
ifdown-eth   ifdown-sit       ifup-eth       ifup-ppp     init.ipv6-global
ifdown-ippp  ifdown-Team      ifup-ippp      ifup-routes  network-functions
ifdown-ipv6  ifdown-TeamPort  ifup-ipv6      ifup-sit     network-functions-ipv6
[root@ying01 network-scripts]# cp ifcfg-ens33 ifcfg-ens33\:0
[root@ying01 network-scripts]# ls |grep  ifcfg-ens33                       //查看复制结果
ifcfg-ens33
ifcfg-ens33:0

第二步 编辑vim ifcfg-ens33:0 ;

第三步:重启网卡后,可以看到新网卡

[root@ying01 network-scripts]# vim ifcfg-ens33:0
[root@ying01 network-scripts]# ifdown ens33 && ifup ens33                //重启网卡
成功断开设备 'ens33'。
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
[root@ying01 network-scripts]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.112.136  netmask 255.255.255.0  broadcast 192.168.112.255
        inet6 fe80::16dc:89c:b761:e115  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:87:3f:91  txqueuelen 1000  (Ethernet)
        RX packets 17313  bytes 22665249 (21.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2628  bytes 261944 (255.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500                         //新增加的网卡
        inet 192.168.112.158  netmask 255.255.255.0  broadcast 192.168.112.255
        ether 00:0c:29:87:3f:91  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 40  bytes 3120 (3.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 40  bytes 3120 (3.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

第四步 用命令 mii-tool 网卡名 :查看网卡连接状态:

[root@ying01 network-scripts]# mii-tool ens33 
ens33: negotiated 1000baseT-FD flow-control, link ok
[root@ying01 network-scripts]# mii-tool ens33:0
ens33:0: negotiated 1000baseT-FD flow-control, link ok       //ok,代表连接正常

ethtool 网卡名 :也可以查看网卡链接状态

[root@ying01 network-scripts]# ethtool ens33:0
Settings for ens33:0:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Speed: 1000Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: on
	MDI-X: off (auto)
	Supports Wake-on: d
	Wake-on: d
	Current message level: 0x00000007 (7)
			       drv probe link
	Link detected: yes                                 //yes,连接正常
[root@ying01 network-scripts]# ethtool lo
Settings for lo:
	Link detected: yes

11.3 更改主机名

第一步:查看本机的主机名

[root@ying01 network-scripts]# hostname
ying01

第二步:重置主机名:hostnamectl set-hostname 新主机名

[root@ying01 network-scripts]# hostnamectl set-hostname damozhiying

第三步:执行子bash,查看是否成功;

[root@ying01 network-scripts]# bash                                  //执行子bash,看书否成功
[root@damozhiying network-scripts]#                                  //成功

11.4 设置DNS
  1. /etc/resolv.conf

查看DNS配置文件:cat /etc/resolv.conf

[root@damozhiying network-scripts]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 119.29.29.29                  //DNS1

那么我们给它添加" DNS2:8.8.8.8

[root@damozhiying network-scripts]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
[root@damozhiying network-scripts]# ifdown ens33 && ifup ens33         //重启
成功断开设备 'ens33'。
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
[root@damozhiying network-scripts]# cat /etc/resolv.conf               //产看配置文件
# Generated by NetworkManager
nameserver 119.29.29.29
nameserver 8.8.8.8

注: 更改网卡配置即可更改DNS配置文件,更改后需要重启网卡(ifdown/ifup)后生效,也可编辑‘/etc/resolv.conf’临时更改DNS配置,该办法在重启网卡后会被网卡配置文件中的DNS覆盖!

  1. /etc/hosts文件

在Linux下还有一个特殊文件/etc/hosts也能解析域名,不过需要我们在里面手动添加IP和域名这些内容,它的作业是临时解析某个域名,非常有用.

查看/etc/hosts文件

[root@damozhiying network-scripts]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

/etc/hosts 的格式很简单,每一行作为一条记录,分成两部分,第一部分是IP,第二部分是域名。关于hosts文件,有几点需要你注意:

  • 一个IP后面可以跟多个域名,可以是几十个甚至上百个;
  • 每行只能有一个IP,也就是说一个域名不能对应多个IP;
  • 如果有多行中出现相同的域名(前面IP不一样),会按最前面出现的记录来解析。

编辑文件/etc/hostsvim :vim /etc/hostsvim

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.112.136 www.qq.com                   //添加的内容

现在检测刚才添加的网址:www.qq.com

[root@damozhiying network-scripts]# ping www.qq.com
PING www.qq.com (192.168.112.136) 56(84) bytes of data.
64 bytes from www.qq.com (192.168.112.136): icmp_seq=1 ttl=64 time=0.076 ms        //注意IP
64 bytes from www.qq.com (192.168.112.136): icmp_seq=2 ttl=64 time=0.079 ms
64 bytes from www.qq.com (192.168.112.136): icmp_seq=3 ttl=64 time=0.079 ms
^C
--- www.qq.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.076/0.078/0.079/0.001 ms

再次编辑文件/etc/hostsvim ;多个域名对应一个IP

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.112.136 www.qq.com www.baidu.com www.126.com
113.108.182.52  www.hao123.com www.baidu.com                    //新的IP

ping www.baidu.com 我们可以到IP;会按最前面出现的记录来解析

[root@damozhiying network-scripts]# ping www.baidu.com
PING www.qq.com (192.168.112.136) 56(84) bytes of data.
64 bytes from www.qq.com (192.168.112.136): icmp_seq=1 ttl=64 time=0.067 ms  //最先的IP
64 bytes from www.qq.com (192.168.112.136): icmp_seq=2 ttl=64 time=0.038 ms
64 bytes from www.qq.com (192.168.112.136): icmp_seq=3 ttl=64 time=0.055 ms
64 bytes from www.qq.com (192.168.112.136): icmp_seq=4 ttl=64 time=0.057 ms
^C
--- www.qq.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.038/0.054/0.067/0.011 ms
[root@damozhiying network-scripts]# ping www.126.com
PING www.qq.com (192.168.112.136) 56(84) bytes of data.
64 bytes from www.qq.com (192.168.112.136): icmp_seq=1 ttl=64 time=0.084 ms
64 bytes from www.qq.com (192.168.112.136): icmp_seq=2 ttl=64 time=0.037 ms
^C
--- www.qq.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.037/0.060/0.084/0.024 ms

ping www.hao123.com 可以看出IP是我们之前的设置的 113.108.182.52

[root@damozhiying network-scripts]# ping www.hao123.com
PING www.hao123.com (113.108.182.52) 56(84) bytes of data.
64 bytes from www.hao123.com (113.108.182.52): icmp_seq=1 ttl=128 time=8.41 ms
64 bytes from www.hao123.com (113.108.182.52): icmp_seq=2 ttl=128 time=12.5 ms
64 bytes from www.hao123.com (113.108.182.52): icmp_seq=3 ttl=128 time=10.3 ms
^C
--- www.hao123.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 8.414/10.444/12.534/1.686 ms
[root@damozhiying network-scripts]# 


扩展内容——IP命令使用

  1. 设置和删除IP
  • ip addr add 192.168.10.10/24 dev eth0
  • ip addr show eth0
  • ip addr del 192.168.10.10/24 dev eth0
  1. 路由相关设置
  • ip route show
  • ip route add default via 192.168.10.1
  • ip route add 192.168.5.0/24 dev eth0
  • ip route del 192.168.10.1

另外用route命令来管理路由:

(a)、网络路由

route add -net 192.168.1.0/24 gw 172.16.1.106

(b)、主机路由

route add -host 192.168.1.110 gw 172.16.1.106

(c)、默认路由

route add default gw 172.16.1.106 或 route add -net 0.0.0.0 gw 172.16.1.106

(d)、删除路由

  • route del -host 192.168.1.110
  • route del -net 192.168.1.0/24
  1. 显示网络统计数据

ip -s link ip -s -s link ls eth0

  1. 停止开启网卡

ip link set eth0 down ip linke set eth0 up

  1. 更改网卡名字

ip link set ens37 name eth1

转载于:https://my.oschina.net/u/3851633/blog/1827906

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值