10.1 使用w查看系统负载 /vmstat /top /sar命令 /nload命令10.6 监控io性能/free命令/ps命令/查看网络状态/linux下抓包

10.1 使用w查看系统负载 /vmstat /top /sar命令 /nload命令

10.1 使用w查看系统负载

10.2 vmstat命令

10.3 top命令

10.4 sar命令

10.5 nload命令

10.1 使用w查看系统负载

系统负载:

        单位时间段内,使用CPU的活动进程有多少个。

使用w查看系统负载(远程登录)

[root@linux-151 ~]# w

02:54:16 up 3 min, 1 user, load average: 0.00, 0.01, 0.01

登录时间 系统已启动的时间 当前登录用户数 系统负载: 1min, 5min, 15minUSER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.48.153 02:51 0.00s 0.02s 0.00s w

load average:0.00,0.01,0.01代表的意思是当前系统1(5)(15)分钟内系统负载情况(负载值)

负载值最佳状态:与机器本身的逻辑CPU数相等(既不闲置资源也不负荷工作) 第1个建议不要超过8 这样后面的进程不用排队

注:pts/0为网络登录终端

使用cat /proc/cpuinfo查看CPU核数

[root@linux-151 ~]# cat /proc/cpuinfo

processor : 0

vendor_id : GenuineIntel

cpu family : 6

model : 60

model name : Intel(R) Core(TM) i5-4200H CPU @ 2.80GHz

stepping : 3

...

processor的数值再加一,即为该机器逻辑CPU个数(例如本机processor的数值为0,即本机逻辑CPU个数为1)。

使用w查看系统负载(直接登录虚拟机)

使用uptime查看系统负载(不显示具体的用户信息)

[root@linux-151 ~]# uptime

03:32:46 up 42 min, 2 users, load average: 0.00, 0.01, 0.01

 

 

10.2 vmstat命令

vmstat命令可以查看系统各项资源的使用情况,当系统出现瓶颈时,vmstat命令可便于分析系统的瓶颈所在。

vmstat命令的用法: vmstat 1 5  

vmstat //只显示当前系统资源使用情况(一行)

vmstat 1 //每一秒钟显示一次当前系统资源使用情况

vmstat 1 5 //每一秒钟显示一次当前系统资源使用情况,一共显示5次

[root@linux-151 ~]# vmstat 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

2 0 0 1574048 2076 166980 0 0 162 7 84 134 0 0 99 0 0

0 0 0 1574048 2076 167012 0 0 0 0 38 40 0 0 100 0 0

0 0 0 1574048 2076 167012 0 0 0 0 37 34 0 0 100 0 0

0 0 0 1574048 2076 167012 0 0 0 0 37 36 0 0 100 0 0

0 0 0 1574048 2076 167012 0 0 0 0 45 43 0 1 99 0 0

proce 进程

  • r : 表示有多少个任务处于run状态:跑的状态,比如只有一个cpu,有10个进程,这10个进程有1个进程在使用cpu,9个在排队,但是9个不是一直在排队,而是有一个值比如1个进程使用cpu1分钟,到了1分钟,第二进程使用cpu1分钟,以此类推,直到进程完成。

  • 进程被cpu以外的资源阻塞了,比如硬盘或者是带宽阻塞了。 block被阻塞的,什么时候被阻塞呢?比如磁盘很忙的时候,你去写一个数据,计算结果出来你要把结果写入磁盘里面去,但是磁盘很慢,它毕竟比不了cpu的速度,只能等待一会,这儿就是磁盘被阻塞了,这个任务被磁盘的IO阻塞了。再比如我们的带宽跑满了,数据想通过TCP/IP通信的方式传输出到远程去送给另外一个服务器上,这个时候如果带宽跑满了,网速很忙,它也会被阻塞,总之:blocal就是那些被我们IO阻塞的任务有多少个,不管是磁盘还是网络。

memory 内存

  • swpd : 有多少个数据量在被交换(单位KB):表示有多少数据量被拿到交换分区里面。这个数值不变化,说明你的内存没有问题,如果这个数值比较大并且频繁的变动,这个时候就要注意你的内存可能不够,或者是内存溢出(程序写的有问题)。

  • free : 内存还剩余多少,单位为KB。

  • buff:表示即将写入磁盘的缓冲大小,单位为KB。

  • cache:表示从磁盘中读取的缓冲大小,单位为KB

swap 显示内容的交换情况

  • si : swap in 进入内存。对象是内存

  • so :swap out 从内存里面出来,对象是内存

这两个值一直为0或者很小,没有什么变化很稳定,说明内存够,没有瓶颈,如果这个值来回的变化很频繁,长期大于0.,说明你的内存不够

io显示磁盘的使用情况

  • bi :进入到内存中去,这意味从磁盘里面读出来: 读磁盘

  • bo :从内存读出来,这意味着写入磁盘里面去: 写磁盘‘’

这两个值怎么叫大呢,一般的服务器超过1000,就有一定压力(一直是1000以上)就会产生瓶颈。 如果只是偶尔1000,其他时候都是0或者很小,就说明问题不大

system显示采集间隔内发生的冲断次数

  • in 终端

  • cs 上下文切换

这个两个值在一秒钟的次数

cpu 显示cpu的使用状态

  • us : 用户进程占用cpu的时间百分比

  • sy : 内核进程占用cpu的时间百分比           us sy  id 加起来正好是100

  • id : CPU空闲状态的时间百分比

  • wa : I/O等待所占用cpu的时间百分比

  • st : 被偷走的的CPU所占百分比(一般都为0,不用关注)

异常数据

  1. r,b 值很高说明系统负载很高,查看cpu是否有瓶颈。

  2. us 也很关键,如果us一直高于50或者接近100%说明某一个进程占用cpu很大的资源,肯那个就是一些计算量很大的任务需要优化一下。

  3. 平常我们去衡量一个系统的负载不仅要看一份中内的负载load average值,还要查看cpu的us这个值得百分比。

10.3 top命令

top命令的用法:

top //查看系统进程,默认3秒一次

q //退出

top -d 1 //1秒显示一次

top -c //显示具体进程的命令,更全路径

top -bn1 //一次性静态显示出来;一般用在写在脚本里面。

注:top 一般查看load average ;us,sy ,MEM(物理内存)剩余空间

top - 09:53:21 up 46 min, 1 user, load average: 0.00, 0.01, 0.01

Tasks: 85 total, 1 running, 84 sleeping, 0 stopped, 0 zombie

%Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

KiB Mem : 1867024 total, 1572524 free, 124712 used, 169788 buff/cache

KiB Swap: 4194300 total, 4194300 free, 0 used. 1561208 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

1 root 20 0 128164 6824 4060 S 0.0 0.4 0:01.00 systemd

2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd

3 root 20 0 0 0 0 S 0.0 0.0 0:00.05 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.00 kworker/u256:0

7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 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.21 rcu_sched

10 root rt 0 0 0 0 S 0.0 0.0 0:00.01 watchdog/0

12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs

13 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns

14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd

15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback

16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd

17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset

18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd

19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md

25 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0

26 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd

27 root 39 19 0 0 0 S 0.0 0.0 0:00.00 khugepaged

28 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto

269个进程  1个运行 268休眠状态 

mem:物理内存

swap :交换分区

KiB Mem :  1865284 total,  1247724 free,   167756 used,   449804 buff/cache

总共内存多大                        多少剩余               使用了多少              还有多少 buff/cache

CPU 占用了多少  sy 不用管                                  wa 等待                                  st是偷走的CPU 虚拟机这样

  • running:运行进程

  • total :所有进程

  • sleepling :休眠的进程

  • stopped:已经停止进程

  • zombie :僵尸进程,主进程意外中断,只剩下一些子进程,自生自灭

默认情况下,按cpu使用百分比排序。

  • PID:进程id ;进程ID在/proc 下

  • USER: 用户名

  • PR:范围0~39;NI:范围-20~19; 进程优先级,PR数值越小,优先级越高

  • VIRI:虚拟内存大小

  • RES:物理内存大小,使用了多少物理内存,单位kib

  • SHR:共享内存

  • S:进场状态

  • cpu:cpu使用多少百分比

  • mem:内存使用多少百分比

  1. top 状态下按M 可以按内存使用大小排序

  2. 按P 按cpu排序

  3. 按数字1可以列出各颗cpu的状态

top -c   查看详细的后面命令路径

top -bn1   静态现实出来

10.4 sar命令

 

 yum install -y sysstat

•sar -n DEV 网卡流量

• sar -q 系统负载

• sar -b 磁盘读写

• sar -f /var/log/sa/saxx 历史文件

• nload命令

• yum install -y epel-release

• yum install -y nload

 

网卡什么时候有瓶颈 千M网卡

带宽指的是比特bit

1byt(字节)=8bit

家庭用的10M带宽,理论上下载的速度是10M/8=1.25M/s

比特是网卡上的计量单位,就是所谓的数据流,而字节是计算机上文件的大小

1M=1024KB

1KB=1024byt

为了计算方便用1000来换算 。

1M=1000KB

1KB=1000byt

  • sar -n DEV 查看网卡流量

  • sar -n DEV -f /var/log/sa/saXX 查看历史流量

  • sar -q 查看历史负载

  • sar -b 查看历史磁盘

  • sar -p 查看历史cpu

注:XX代表日期,如想查看5月7号的信息,则XX为07

sar 命令很强大,它可以监控系统所有资源状态,比如平均负载、网卡流量、磁盘状态、内存使用等等。它不同于其他系统状态监控工具的地方在于,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。如果你系统没有安装这个命令,请使用 yum install -y sysstat 命令安装。初次使用sar命令会报错,那是因为sar工具还没有生成相应的数据库文件(时时监控就不会了,因为不用去查询那个库文件)。它的数据库文件在 “/var/log/sa/” 目录下,默认保存一个月。因为这个命令太过复杂。

注:yum install -y sysstat 安装后运行命令的时候会报错;这是因为sar的特性,每10分钟才会统计一次,安装完成后直接使用还未生成相应文件 。

  • 查看网卡流量 sar -n DEV

#sar -n DEV 1 2 //1秒显示一次,显示2次

[root@linux-151 ~]# sar -n DEV 1 2

Linux 3.10.0-693.el7.x86_64 (linux-151) 2018年05月07日 _x86_64_ (1 CPU)

16时05分41秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

16时05分42秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

16时05分42秒 ens33 1.00 1.00 0.06 0.18 0.00 0.00 0.00

16时05分42秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

16时05分43秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

16时05分43秒 ens33 0.99 0.99 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.29 0.00 0.00 0.00

有2块网卡一块 lo  一块en33 rxpck/s 接受到的数据包/s  txpck/s 发送出去数据包   

rxpck/s 接受的数据量   txkb/s 发送出去的数据量

IFACE这列表示设备名称,rxpck/s 表示每秒进入收取的包的数量,txpck/s 表示每秒发送出去的包的数量,rxbyt/s 表示每秒收取的数据量(单位Byte),txbyt/s表示每秒发送的数据量。后面几列不需要关注。如果有一天你所管理的服务器丢包非常严重,那么你就应该看一看这个网卡流量是否异常了,如果rxpck/s 那一列的数值2000左右是正常的,如果上W就不正常了,被攻击了,这个是我们就要去抓包去查看下一下,正常的服务器网卡流量不会高于这么多,除非是你自己在拷贝数据。上面的命令是查看网卡流量历史的,如何时时查看网卡流量呢?

另外也可以查看某一天的网卡流量历史,使用-f选项,后面跟文件名,如果你的系统格式Redhat或者CentOS那么sar的库文件一定是在/var/log/sa/目录下的。: 里面友两种文件一种是sa后面跟的是日期,要用sar -f 打开;还有一种是sar,可以用cat查看;文件里面存的是一个月30天的历史记录。

过了10分钟后,用sar命令就正常了 

[root@linux-5 ~]# sarLinux 3.10.0-693.el7.x86_64 (linux-151) 2018年05月07日 _x86_64_ (1 CPU)

14时50分01秒 CPU %user %nice %system %iowait %steal %idle

15时00分02秒 all 0.02 0.00 0.06 0.00 0.00 99.92

15时10分01秒 all 0.02 0.00 0.07 0.00 0.00 99.91

15时20分01秒 all 0.04 0.00 0.12 0.01 0.00 99.83

15时30分01秒 all 0.04 0.00 0.10 0.00 0.00 99.86

15时40分01秒 all 0.03 0.00 0.09 0.00 0.00 99.88

15时50分01秒 all 0.01 0.00 0.07 0.00 0.00 99.91

16时00分01秒 all 0.04 0.00 0.08 0.00 0.00 99.88

16时10分01秒 all 0.01 0.00 0.07 0.00 0.00 99.92

16时20分01秒 all 0.01 0.00 0.05 0.00 0.00 99.95

平均时间: all 0.02 0.00 0.08 0.00 0.00 99.90

sar -n DEV -f /var/log/sa/sa04 查看历史流量

 

sa04这个目录是有规律的,是按日期来的,这个目录最多保存一个月

[root@linux-5 ~]# sar -n DEV -f /var/log/sa/sa07

Linux 3.10.0-693.el7.x86_64 (linux-151) 20180507日 _x86_64_ (1 CPU)

145001秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

150002秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00150002秒 ens33 0.07 0.06 0.01 0.00 0.00 0.00 0.00151001秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00151001秒 ens33 0.09 0.05 0.01 0.00 0.00 0.00 0.00152001秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00152001秒 ens33 0.08 0.05 0.01 0.00 0.00 0.00 0.00

查看历史负载 sar -q

[root@linux-5 ~]# sar -qLinux 3.10.0-693.el7.x86_64 (linux-151) 2018年05月07日 _x86_64_ (1 CPU)

14时50分01秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked

15时00分02秒 2 104 0.00 0.01 0.04 0

15时10分01秒 2 105 0.00 0.01 0.04 0

15时20分01秒 2 103 0.01 0.02 0.04 0

15时30分01秒 1 104 0.02 0.02 0.05 0

15时40分01秒 1 105 0.00 0.01 0.05 0

15时50分01秒 1 104 0.00 0.01 0.05 0

16时00分01秒 1 104 0.00 0.01 0.05 0

16时10分01秒 1 105 0.00 0.01 0.05 0

16时20分01秒 1 104 0.00 0.01 0.05 0

16时30分01秒 2 104 0.00 0.01 0.05 0

平均时间: 1 104 0.00 0.01 0.05 0

查看历史磁盘 sar -b

[root@linux-5 ~]# sar -b

Linux 3.10.0-693.el7.x86_64 (linux-151) 20180507日 _x86_64_ (1 CPU)

145001秒 tps rtps wtps bread/s bwrtn/s

150002 0.04 0.00 0.04 0.00 0.51151001 0.07 0.02 0.06 0.31 0.75152001 0.79 0.34 0.45 10.32 12.16153001 0.06 0.00 0.06 0.00 0.61154001 0.06 0.00 0.06 0.00 0.65155001 0.02 0.00 0.02 0.00 0.29160001 0.05 0.00 0.05 0.00 0.51161001 0.09 0.00 0.09 0.00 1.30162001 0.03 0.00 0.03 0.00 0.33163001 0.17 0.01 0.16 0.97 2.45

平均时间: 0.14 0.04 0.10 1.16 1.95

查看历史cpu sar -p

[root@linux-5 ~]# sar -pLinux 3.10.0-693.el7.x86_64 (linux-151) 2018年05月07日 _x86_64_ (1 CPU)

14时50分01秒 CPU %user %nice %system %iowait %steal %idle

15时00分02秒 all 0.02 0.00 0.06 0.00 0.00 99.92

15时10分01秒 all 0.02 0.00 0.07 0.00 0.00 99.91

15时20分01秒 all 0.04 0.00 0.12 0.01 0.00 99.83

15时30分01秒 all 0.04 0.00 0.10 0.00 0.00 99.86

15时40分01秒 all 0.03 0.00 0.09 0.00 0.00 99.88

15时50分01秒 all 0.01 0.00 0.07 0.00 0.00 99.91

16时00分01秒 all 0.04 0.00 0.08 0.00 0.00 99.88

16时10分01秒 all 0.01 0.00 0.07 0.00 0.00 99.92

16时20分01秒 all 0.01 0.00 0.05 0.00 0.00 99.95

16时30分01秒 all 0.02 0.00 0.13 0.00 0.00 99.85

平均时间: all 0.02 0.00 0.08 0.00 0.00 99.89

注意:/var/log/sa下面有两个文件

  1. sa07 是当天生成,sar07第二天生成

  2. sa07和sar07的区别:sa07要用sa的命令来查看:sar -n DEV -f /var/log/sa/sa07

  3.  

    sar07 可以直接用cat来查看:cat /var/log/sa/sar07

    图8

  4. sar -n DEV -f /var/log/sa/sa07

[root@linux-5 ~]# sar -n DEV -f /var/log/sa/sa07

Linux 3.10.0-693.el7.x86_64 (linux-151) 20180507日 _x86_64_ (1 CPU)

145001秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

150002秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00150002秒 ens33 0.07 0.06 0.01 0.00 0.00 0.00 0.00151001秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00151001秒 ens33 0.09 0.05 0.01 0.00 0.00 0.00 0.00152001秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00152001秒 ens33 0.08 0.05 0.01 0.00 0.00 0.00 0.00

10.5 nload命令

  • 在安装nload前先装一个扩展包

    yum install -y epel-release

    yum install -y nload

[root@linux-151 ~]# nload

 

会出现一个动态的一个实时的网卡页面

网卡名;IP;几个网卡(按方向键选择网卡 )

  1. Inconming:进来的带宽(受到攻击的时候流量会很大)

  2. outgoing: 出去的带宽(买的带宽)

七周二次课

10.6 监控io性能

10.7 free命令

10.8 ps命令

10.9 查看网络状态

10.10 linux下抓包

扩展tcp三次握手四次挥手 http://www.doc88.com/p-9913773324388.html

tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html

10.6 监控io性能

  • iostat 磁盘以及CPU使用概况(与vmstat用法相似)

[root@linux-5 ~]# iostat

Linux 3.10.0-693.el7.x86_64 (linux-5) 2018年05月07日 _x86_64_ (1 CPU)

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

0.08 0.00 0.16 0.00 0.00 99.75

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn

sda 1.09 24.00 6.73 234034 65620

sdb 0.01 0.43 0.00 4172 0

scd0 0.00 0.11 0.00 1028 0

  • iostat -x 查看磁盘使用情况

其中,%util这项参数非常重要,它表示CPU等待io时间所占的百分比。cpu有部分时间给进程计算,也有一部分时间是用来等待io的,等待磁盘读和写,这个时间比是多少,占比是多大呢,这个就是%util。如果这个数字很大,达到50%~60%及以上,那说明硬盘的io性能太差,它非常的忙,数字很大,读和写也很大。如果读和写两列不大,但是%util这列很大,说明你的硬盘存在问题和故障。如果你的硬盘很慢,肯定会影响你的性能,即使你的CPU再快再厉害,硬盘速度跟不上,系统整体性能也会存在很大的瓶颈。

  • iotop 查看具体进程的io性能

10.7 free命令

  • free 查看内存使用情况

[root@linux-5 ~]# free

total used free shared buff/cache available

Mem: 1867024 131548 1401004 8800 334472 1540284Swap: 4194300 0 4194300

  • free -m/-g/-h 使被查看的参数后带有相应的单位

[root@linux-5 ~]# free -h

total used free shared buff/cache available

Mem: 1.8G 128M 1.3G 8.6M 326M 1.5GSwap: 4.0G 0B 4.0G

其中,total代表内存总量,used代表已使用的内存量buffer,free代表空闲内存(不完全等同于剩余内存),buffer代表缓冲,cache代表缓存,available代表真正剩余内存

buffer与cache在Linux系统内存中是被预先分配的

buffer与cache的区别:数据流向不同

磁盘(数据) --》 内存(起缓存作用cache) --》 cpu

cpu (数据) --》 内存(起缓冲作用buffer) --》 磁盘

total=used+free+buff/cache

available包含了free以及buff/cache中未被使用的部分

10.8 ps命令 

ps aux/-elf 查看系统当前所有进程(将所有进程以快照的形式进行展现)

[root@linux-5 ~]# ps aux

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

root 1 0.0 0.3 128164 6844 ? Ss 14:09 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21

root 2 0.0 0.0 0 0 ? S 14:09 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? S 14:09 0:00 [ksoftirqd/0]

root 5 0.0 0.0 0 0 ? S< 14:09 0:00 [kworker/0:0H]

root 7 0.0 0.0 0 0 ? S 14:09 0:00 [migration/0]

root 8 0.0 0.0 0 0 ? S 14:09 0:00 [rcu_bh]

...

USER 用户

PID 进程标志数,/proc文件里面有跟pid相同名字的目录;进程的id,这个id很有用,在linux中内核管理进程就得靠pid来识别和管理某一个进程,比如我想终止某一个进程,则用 kill 进程的pid 。有时并不能杀掉,则需要加一个-9选项了 kill -9 进程pid;当某个进程有问题时,我想知道它是哪个目录下的,这时也需要用到pid(pid都在proc这个目录下,每一个pid就是一个目录)

VSZ 虚拟内存大小

RSS 真正内存大小

TTY 从哪里启动,pts/0 当前终端

STAT 进程的状态

S 表示休眠sleeps 主进程,父进程

< 高优先级,优先得到cpu的资源

N 低优先级

+ 前台运行进程

R runing,正在运行的进程(某个时间段使用到cpu资源的进程)

L 被锁的进程

l 多线程的进程

Z 僵尸进程

x 已经死掉的进程

T 暂停的进程ctrl+z

D 不能被终端的进程,比如IO,很少见。

| 多线程进程

S<s 高优先级的主进程,休眠状态

START 进程启动时间

TIME 占用cpu多长时间

COMMAND 进程名称

ps与top的区别:ps是将进程以快照的形式静态显示,top是将进程动态呈现

ps aux |grep 进程名称 //检查进程是否运行

10.9 查看网络状态

  • netstat 查看网络状态

  • netstat -lnp 查看监听端口

  • netstat -an 查看系统的网络连接状况

  • netstat -lntp 只看出tcp的,不包含socket

  • ss -an 和netstat异曲同工

netstat 命令是用来查看网络连接状态,系统所有开放端口,路由表等信息

监听端口的作用是与外部进行通信

  • netstat -lnp 用来监听有哪些端口

[root@linux-5 ~]# netstat -lnpActive 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 889/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1114/master

tcp6 0 0 :::22 :::* LISTEN 889/sshd

tcp6 0 0 ::1:25 :::* LISTEN 1114/master

udp 0 0 127.0.0.1:323 0.0.0.0:* 540/chronyd

udp6 0 0 ::1:323 :::* 540/chronyd

raw6 0 0 :::58 :::* 7 584/NetworkManager

Active UNIX domain sockets (only servers)

Proto RefCnt Flags Type State I-Node PID/Program name Path

unix 2 [ ACC ] STREAM LISTENING 15443 1/systemd /var/run/dbus/system_bus_socket

unix 2 [ ACC ] STREAM LISTENING 12656 1/systemd /run/systemd/private

unix 2 [ ACC ] STREAM LISTENING 19764 1114/master private/tlsmgr

unix 2 [ ACC ] SEQPACKET LISTENING 12718 1/systemd /run/udev/control

unix 2 [ ACC ] STREAM LISTENING 19767 1114/master private/rewrite

unix 2 [ ACC ] STREAM LISTENING 19770 1114/master private/bounce

unix 2 [ ACC ] STREAM LISTENING 19773 1114/master private/defer

unix 2 [ ACC ] STREAM LISTENING 19776 1114/master private/trace

unix 2 [ ACC ] STREAM LISTENING 19779 1114/master private/verify

unix 2 [ ACC ] STREAM LISTENING 19785 1114/master private/proxymap

unix 2 [ ACC ] STREAM LISTENING 19791 1114/master private/smtp

unix 2 [ ACC ] STREAM LISTENING 19788 1114/master private/proxywrite

unix 2 [ ACC ] STREAM LISTENING 19794 1114/master private/relay

unix 2 [ ACC ] STREAM LISTENING 19800 1114/master private/error

unix 2 [ ACC ] STREAM LISTENING 19803 1114/master private/retry

unix 2 [ ACC ] STREAM LISTENING 19806 1114/master private/discard

unix 2 [ ACC ] STREAM LISTENING 19809 1114/master private/local

unix 2 [ ACC ] STREAM LISTENING 19812 1114/master private/virtual

unix 2 [ ACC ] STREAM LISTENING 19815 1114/master private/lmtp

unix 2 [ ACC ] STREAM LISTENING 19818 1114/master private/anvil

unix 2 [ ACC ] STREAM LISTENING 19821 1114/master private/scache

unix 2 [ ACC ] STREAM LISTENING 12770 1/systemd /run/lvm/lvmetad.socket

unix 2 [ ACC ] STREAM LISTENING 8422 1/systemd /run/systemd/journal/stdout

unix 2 [ ACC ] STREAM LISTENING 19753 1114/master public/pickup

unix 2 [ ACC ] STREAM LISTENING 19757 1114/master public/cleanup

unix 2 [ ACC ] STREAM LISTENING 19760 1114/master public/qmgr

unix 2 [ ACC ] STREAM LISTENING 19782 1114/master public/flush

unix 2 [ ACC ] STREAM LISTENING 12787 1/systemd /run/lvm/lvmpolld.socket

unix 2 [ ACC ] STREAM LISTENING 19797 1114/master public/showq

unix 2 [ ACC ] STREAM LISTENING 16373 529/VGAuthService /var/run/vmware/guestServicePipe

  • netstat -lntp 查看监听的端口

[root@linux-5 ~]# 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 889/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1114/master

tcp6 0 0 :::22 :::* LISTEN 889/sshd

tcp6 0 0 ::1:25 :::* LISTEN 1114/master

查看监听的接口后,服务端到底跟哪些客户端进行通信,以及客户端跟我们服务端通信过程到底是一个什么样的状态?

是连接进行数据传输还是两者刚刚建立连接,还是通信完成后保持一个连接而正在等待:要用netstat -an 来查看

  • netstat -an 查看所有连接的TCP状态

  1. 查看服务端和客户端之间的状态

  2. 用这个值去衡量服务器有没有压力,有没有并发,并发是多少

  3. netstat -an |grep 122.122.69.86:80|grep -ic estab -i是忽略大小写 -c符合要求的行数

    这台服务器的并发数是884的意思是在这一秒或者这一个时刻内有884个连接。

  • netstat -an tcp IP

[root@linux-5 ~]# netstat -an tcp IP

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.88.5:22 192.168.88.1:56815 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 15443 /var/run/dbus/system_bus_socket

unix 2 [ ACC ] STREAM LISTENING 12656 /run/systemd/private

unix 2 [ ACC ] STREAM LISTENING 19764 private/tlsmgr

unix 2 [ ACC ] SEQPACKET LISTENING 12718 /run/udev/control

unix 2 [ ACC ] STREAM LISTENING 19767 private/rewrite

unix 2 [ ACC ] STREAM LISTENING 19770 private/bounce

unix 2 [ ACC ] STREAM LISTENING 19773 private/defer

unix 2 [ ACC ] STREAM LISTENING 19776 private/trace

...

.sock linux,unix 中特有的文件,可以使进程间通讯

Path 状态

TIME_WAIT 传输完成 链接保持着 等待下一次通讯

ESTABLTSHED 已经建立链接正在通讯

FIN_WAIT2 状态详情,可参考【TCP/IP 三次握手】

netstat -an |grep 112.112.69.86:80 查看80端口 并发状态

netstat -an |grep 112.112.69.86:80 |grep -ic estab 统计链接(ESTABLTSHED)正在通讯的链接总数 (前端 静态网页 2到3万 后端 有php mysql等 2000到3000 左右

  • netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}' 查看所有连接状态的数字

[root@linux-5 ~]# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'

LISTEN 4

ESTABLISHED 1

10.10 linux下抓包

tcpdump 工具

如果没有这个工具需要安装一下;yum install -y tcpdump

  • tcpdump -i ens33

[root@linux-5 ~]# tcpdump -i ens33tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

10:41:15.050051 IP linux-5.ssh > 192.168.88.1.56815: Flags [P.], seq 3103189466:3103189678, ack 2479336344, win 318, length 212

10:41:15.050291 IP 192.168.88.1.56815 > linux-5.ssh: Flags [.], ack 212, win 257, length 0

10:41:15.050693 IP linux-5.54252 > 211.140.197.58.domain: 41781+ PTR? 1.88.168.192.in-addr.arpa.(43)

3 packets captured

11 packets received by filter

0 packets dropped by kernel

  • tcpdump -n -i ens33

[root@linux-5 ~]# tcpdump -n -i ens33tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

10:43:09.543832 IP 192.168.88.5.ssh > 192.168.88.1.56815: Flags [P.], seq 3104226270:3104226482, ack 2479338196, win 318, length 212

10:43:09.544140 IP 192.168.88.1.56815 > 192.168.88.5.ssh: Flags [.], ack 212, win 257, length 0

10:43:09.544333 IP 192.168.88.5.ssh > 192.168.88.1.56815: Flags [P.], seq 212:504, ack 1, win 318, length 292

10:43:09.544532 IP 192.168.88.5.ssh > 192.168.88.1.56815: Flags [P.], seq 504:668, ack 1, win 318, length 164

10:43:09.544751 IP 192.168.88.1.56815 > 192.168.88.5.ssh: Flags [.], ack 668, win 255, length 0

10:43:09.545021 IP 192.168.88.5.ssh > 192.168.88.1.56815: Flags [P.], seq 668:928, ack 1, win 318, length 260

10:43:09.545235 IP 192.168.88.5.ssh > 192.168.88.1.56815: Flags [P.], seq 928:1092, ack 1, win 318, length 164

10:43:09.545402 IP 192.168.88.1.56815 > 192.168.88.5.ssh: Flags [.], ack 1092, win 253, length 0

10:43:09.545504 IP 192.168.88.5.ssh > 192.168.88.1.56815: Flags [P.], seq 1092:1352, ack 1, win 318, length 260

10:43:09.545709 IP 192.168.88.5.ssh > 192.168.88.1.56815: Flags [P.], seq 1352:1516, ack 1, win 318, length 164

10:43:09.545906 IP 192.168.88.1.56815 > 192.168.88.5.ssh: Flags [.], ack 1516, win 258, length 0

...

加一个n就是ip以数字的形式打印出来,如果不加就会显示主机名

  • tcpdump -nn -i ens33

[root@linux-5 ~]# tcpdump -nn -i ens33tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

10:45:51.110614 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 3104481666:3104481878, ack 2479339532, win 318, length 212

10:45:51.110924 IP 192.168.88.1.56815 > 192.168.88.5.22: Flags [.], ack 212, win 257, length 0

10:45:51.111362 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 212:504, ack 1, win 318, length 292

10:45:51.111792 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 504:668, ack 1, win 318, length 164

10:45:51.112007 IP 192.168.88.1.56815 > 192.168.88.5.22: Flags [.], ack 668, win 255, length 0

10:45:51.112139 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 668:928, ack 1, win 318, length 260

10:45:51.112363 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 928:1092, ack 1, win 318, length 164

10:45:51.112562 IP 192.168.88.1.56815 > 192.168.88.5.22: Flags [.], ack 1092, win 253, length 0

10:45:51.112674 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 1092:1352, ack 1, win 318, length 260

10:45:51.112864 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 1352:1516, ack 1, win 318, length 164

10:45:51.113060 IP 192.168.88.1.56815 > 192.168.88.5.22: Flags [.], ack 1516, win 258, length 0

10:45:51.113207 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 1516:1776, ack 1, win 318, length 260

10:45:51.113417 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 1776:1940, ack 1, win 318, length 164

10:45:51.113612 IP 192.168.88.1.56815 > 192.168.88.5.22: Flags [.], ack 1940, win 257, length 0

10:45:51.113717 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 1940:2200, ack 1, win 318, length 260

10:45:51.114003 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 2200:2364, ack 1, win 318, length 164

10:45:51.114310 IP 192.168.88.1.56815 > 192.168.88.5.22: Flags [.], ack 2364, win 255, length 0

10:45:51.114549 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 2364:2624, ack 1, win 318, length 260

10:45:51.115043 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 2624:2788, ack 1, win 318, length 164

10:45:51.115375 IP 192.168.88.1.56815 > 192.168.88.5.22: Flags [.], ack 2788, win 253, length 0

...

第二个n是端口,tcpdump -nn -i ens33 加上第二个n 就会显示ip,端口形式显示

tcpdump 命令:

  • -i:指定网卡

  • host:指定ip

  • port:指定端口

  • -c :指定包数量

  • -w :写入指定文件里,将包的内容写入文件里面,如果不加-w直接在屏幕上显示的不是数据包,而是数据流向

  • length 长度

  • tcpdump -nn -i ens33 port 22 

    [root@linux-5 ~]# tcpdump -nn -i ens33 port 22

    tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

    10:52:00.892331 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 3106645586:3106645798, ack 2479341724, win 318, length 212

    10:52:00.892652 IP 192.168.88.1.56815 > 192.168.88.5.22: Flags [.], ack 212, win 258, length 0

    10:52:00.893665 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 212:504, ack 1, win 318, length 292

    10:52:00.894074 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 504:668, ack 1, win 318, length 164

    10:52:00.894349 IP 192.168.88.1.56815 > 192.168.88.5.22: Flags [.], ack 668, win 256, length 0

    10:52:00.894510 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 668:928, ack 1, win 318, length 260

    10:52:00.894792 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 928:1092, ack 1, win 318, length 164

    10:52:00.895109 IP 192.168.88.1.56815 > 192.168.88.5.22: Flags [.], ack 1092, win 255, length 0

  • tcpdump -nn -i ens33 port 22 -c 6

[root@linux-5 ~]# tcpdump -nn -i ens33 port 22 -c 6

tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

10:53:14.412578 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 3106745018:3106745230, ack 2479342068, win 318, length 212

10:53:14.412819 IP 192.168.88.1.56815 > 192.168.88.5.22: Flags [.], ack 212, win 257, length 0

10:53:14.413086 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 212:504, ack 1, win 318, length 292

10:53:14.413280 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 504:668, ack 1, win 318, length 164

10:53:14.413413 IP 192.168.88.1.56815 > 192.168.88.5.22: Flags [.], ack 668, win 255, length 0

10:53:14.413487 IP 192.168.88.5.22 > 192.168.88.1.56815: Flags [P.], seq 668:928, ack 1, win 318, length 260

6 packets captured

6 packets received by filter

0 packets dropped by kernel

  • tcpdump -nn -i ens33 port 22 -c 6 -w /tmp/1.cap 写入指定文件里,将包的内容写入文件里面,是真正的包,如果不加-w直接在屏幕上显示的不是数据包,而是数据流向

[root@linux-5 ~]# tcpdump -nn -i ens33 port 22 -c 6 -w /tmp/1.cap

tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

6 packets captured

6 packets received by filter

0 packets dropped by kernel

  • tcpdump -r 查看数据流向,不是数据包

[root@linux-5 ~]# tcpdump -r /tmp/1.cap

reading from file /tmp/1.cap, link-type EN10MB (Ethernet)

10:54:20.933907 IP linux-5.ssh > 192.168.88.1.56815: Flags [P.], seq 3106748910:3106749058, ack 2479344264, win 318, length 14810:54:20.934381 IP 192.168.88.1.56815 > linux-5.ssh: Flags [.], ack 148, win 253, length 010:54:50.704612 IP 192.168.88.1.56815 > linux-5.ssh: Flags [P.], seq 1:53, ack 148, win 253, length 5210:54:50.744392 IP linux-5.ssh > 192.168.88.1.56815: Flags [.], ack 53, win 318, length 010:55:50.711528 IP 192.168.88.1.56815 > linux-5.ssh: Flags [P.], seq 53:105, ack 148, win 253, length 5210:55:50.711567 IP linux-5.ssh > 192.168.88.1.56815: Flags [.], ack 105, win 318, length 0

wireshark 工具

如果没有需要先安装一下 yum install -y wireshark

[root@linux-5 ~]# yum install -y wireshark

  • 用法:tshark 只需要记住这条命令;用的时候复制一下,用于查看web服务情况

    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

猜你喜欢

转载自blog.csdn.net/weixin_42213920/article/details/81952074