日常运维(Ⅰ)
一、使用w查看系统负载
- 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
这里的processor计数从0开始,也就是说一个显示为0,二个显示为1。
二、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 不能中断的进程 R run状态的进程 S sleep状态的进程 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
参考文章:
十一、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
- /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覆盖!
- /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命令使用
- 设置和删除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
- 路由相关设置
- 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
- 显示网络统计数据
ip -s link ip -s -s link ls eth0
- 停止开启网卡
ip link set eth0 down ip linke set eth0 up
- 更改网卡名字
ip link set ens37 name eth1