您的位置:首页 > 理论基础 > 计算机网络

10.6 监控io性能 ,free命令,ps命令,查看网络状态,linux下抓包

2018-07-12 08:59 1021 查看

监控io性能

iostat -x 磁盘使用

iostat 在安装sysstat的时候会自动安装上这个命令。它和sar是同一个包

[root@linux-128 ~]# yum install -y sysstat

[root@linux-128 ~]# iostat
Linux 3.10.0-514.el7.x86_64 (linux-128) 	2017年11月28日 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
1.19    0.00    1.98    0.33    0.00   96.50

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb               1.65        10.21         0.00       1840          0
sda              31.35      1110.33       414.35     200192      74707
scd0              0.06         0.24         0.00         44          0
dm-0              0.33         2.53         0.00        456          0

iostat和sar命令差不多,后面接数字

iostat 1,1秒显示一次;sda bk_read/s kb_wrtn/s 读写速度

[root@linux-128 ~]# iostat 1
Linux 3.10.0-514.el7.x86_64 (linux-128) 	2017年11月28日 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
0.57    0.00    0.98    0.16    0.00   98.29

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb               0.80         4.94         0.00       1840          0
sda              15.23       537.50       200.94     200192      74839
scd0              0.03         0.12         0.00         44          0
dm-0              0.16         1.22         0.00        456          0

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

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
scd0              0.00         0.00         0.00          0          0
dm-0              0.00         0.00         0.00          0          0

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

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
scd0              0.00         0.00         0.00          0          0
dm-0              0.00         0.00         0.00          0          0

^C

用sar -b 也可以查看速度些速度



iostat -x 1
这里最重要的是%util;这列表示你的IO等待,磁盘使用有多少时间占用cpu,cpu有部分时间给进程经销计算,也有一部分时间等待io的,等待磁盘读和写,这个时间比是多少,占比是多大呢,这个就是%util。如果这个数字很大,50%60%那你的IO太差,他非常的忙,数字很大,读和写也很大,如果读和写两列不大,但是util这列很大,说明你的硬盘存在问题和故障。如果你的硬盘很慢,肯定会影响你的性能,及时你的CPU很快在厉害,,硬盘更不上也会存在很大的瓶颈的。记住iostat -x 关注%util这一列。

[root@linux-128 ~]# iostat -x 1
Linux 3.10.0-514.el7.x86_64 (linux-128) 	2017年11月28日 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
0.25    0.00    0.44    0.08    0.00   99.23

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.33    0.00     2.03     0.00    12.35     0.00    0.06    0.06  0.00   0.05   0.00
sda               0.01     0.29    5.22    1.21   226.67    83.51    96.48     0.05    7.59    2.14 31.06   0.95   0.61
scd0              0.00     0.00    0.01    0.00     0.05     0.00     8.00     0.00    1.27    1.27  0.00   1.27   0.00
dm-0              0.00     0.00    0.07    0.00     0.50     0.00    15.20     0.00    0.02    0.02  0.00   0.02   0.00

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

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.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00  0.00   0.00   0.00
sda               0.00     0.00    0.00    1.98     0.00     1.49     1.50     0.00    0.50    0.00  0.50   0.50   0.10
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00  0.00   0.00   0.00
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00  0.00   0.00   0.00

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

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.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00  0.00   0.00   0.00
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00  0.00   0.00   0.00
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00  0.00   0.00   0.00
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00  0.00   0.00   0.00


iotop 磁盘使用

如果发现磁盘io很忙,到底是那个进程在读写呢,我们用iotop来查看。

[root@linux-128 ~]# yum install -y iotop

[root@linux-128 ~]#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
1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-r~tem --deserialize 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]
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]
16 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/2]
17 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/2]
18 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/2]
531 be/3 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % auditd -n
20 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/2:0H]
21 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/3]
22 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/3]
23 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/3]
25 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/3:0H]
27 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khelper]
28 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kdevtmpfs]
29 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [netns]
30 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khungtaskd]


free命令

free 查看内存使用情况

free -m / -g / -h

buffer/cache区别

公式:total=used+free+buff/cache

avaliable包含free和buffer/cache剩余

free 单位KB

[root@linux-128 ~]# free
total        used        free      shared  buff/cache   available
Mem:        1875748      115996     1453008        8748      306744     1583468
Swap:       4194300           0     4194300

free -m 单位M

[root@linux-128 ~]# free -m
total        used        free      shared  buff/cache   available
Mem:           1831         113        1418           8         299        1546
Swap:          4095           0        4095

free -h 单位G

[root@linux-128 ~]# free -h
total        used        free      shared  buff/cache   available
Mem:           1.8G        113M        1.4G        8.5M        299M        1.5G
Swap:          4.0G          0B        4.0G


total 是整个内存大小 total=used+free+buff/cache

used 使用了多少内存

free 剩余多少内存 正在剩余的内存是第二行的free

available 正则可用的内存 available=free+剩余buff/cache



cache:磁盘速度是比较慢的,cpu比较快,两者速度相差比较大,为了缓解这个局面,工程师就想到了缓存这个思路,缓存是介于cpu和磁盘之间的一种介子,他的速度比cpu慢一点,比磁盘速度快一点,当我们从磁盘里取数据的时候速度很慢,就可以事先把数据取出来放到内存里(cache)当cpu用到的时候就从内存里去取,这个速度就比原来直接从磁盘里取拿数据速度要快很多,这里内存里存放这部分数据的空间就要cache

buffe正好相反,cpu把数据处理完后,形成一个结果(也是数据)要写入到磁盘里去的时候,这个速度也很慢的,我们同样的速度也是先把它写到内存里,内存再逐渐慢慢地在后台一点点写入磁盘里,这一部分空间就叫中buffer(缓冲)

buffer 是即将写入到磁盘里去的数据暂存的内存区域

cached是从磁盘里读出来的数据暂存的内存区域。
linux内核会先分配一部分buffer,cacha出来留着备用,这部分空间不可能直接用完,可能会有一部分剩余,那么这部分剩余实际上对内存来说是可用的,可回收的。

内存正真剩余=物理内存+buffer+cache

free列第一行的数字为0表示内存已经分配完,但并不表示内存就耗尽了。 因为可能还有分配的cached并没有用完。

物理内存、buffer和cached三个没有再可分配的容量那就意味着所有的物理内存都耗尽了,

真正的内存用完了导致频繁使用swap 程序运行速度会超级慢

ps 查看系统当中所有的进程

top -bn1 也可以显示所有的进程

[root@linux-128 ~]# top -bn1
top - 10:46:12 up 24 min,  1 user,  load average: 0.00, 0.02, 0.05
Tasks: 108 total,   2 running, 106 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.3 sy,  0.0 ni, 99.4 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1875748 total,  1452588 free,   116272 used,   306888 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1583128 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
2264 root      20   0  157584   2040   1492 R   5.9  0.1   0:00.03 top
1 root      20   0  125300   3760   2400 S   0.0  0.2   0:01.82 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.19 ksoftirqd/0
5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
7 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 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 R   0.0  0.0   0:01.59 rcu_sched
10 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 watchdog/0
11 root      rt   0       0      0      0 S   0.0  0.0   0:00.13 watchdog/1
12 root      rt   0       0      0      0 S   0.0  0.0   0:00.06 migration/1
13 root      20   0       0      0      0 S   0.0  0.0   0:00.18 ksoftirqd/1
16 root      rt   0       0      0      0 S   0.0  0.0   0:00.01 watchdog/2
17 root      rt   0       0      0      0 S   0.0  0.0   0:00.02 migration/2
。。。


ps aux 一盘工作中使用这个命令

[root@linux-128 ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.1  0.2 125300  3760 ?        Ss   10:21   0:01 /usr/lib/systemd/systemd --switched-
root         2  0.0  0.0      0     0 ?        S    10:21   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    10:21   0:00 [ksoftirqd/0]
。。。。

root      2142  0.0  0.0      0     0 ?        S<   10:22   0:00 [kworker/3:1H]
root      2143  0.0  0.1 116016  2664 pts/0    Ss   10:22   0:00 -bash
root      2217  0.0  0.0      0     0 ?        S<   10:24   0:00 [kworker/1:2H]
root      2232  0.0  0.0      0     0 ?        S<   10:34   0:00 [kworker/3:2H]
root      2246  0.0  0.0      0     0 ?        S    10:37   0:00 [kworker/0:0]
root      2263  0.0  0.0      0     0 ?        S    10:42   0:00 [kworker/0:2]
root      2285  0.0  0.0 151068  1820 pts/0    R+   10:47   0:00 ps aux


ps -elf 这两者显示的内容是相识的

USER 用户

PID 进程标志数,/proc文件里面有跟pid相同名字的目录;进程的id,这个id很有用,在linux中内核管理进程就得靠pid来识别和管理某一个程,比如我想终止某一个进程,则用 ‘kill 进程的pid 有时并不能杀掉,则需要加一个-9选项了 kill -9 进程pid

某个进程有问题,我想知道它是那个目录下的?(pid都在proc这个目录下,每一个pid就是一个目录)



ls /proc/进程ID/
%cpu 占用cpu百分比

%mem 占用内存百分比

VSZ 虚拟内存大小

RSS 真正内存大小

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

STAT 进程的状态
S 表示休眠sleep

s 主进程,父进程

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

N 低优先级

前台运行进程

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

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

L 被锁的进程

l 多线程的进程

Z僵尸进程

x 已经死掉的进程

T 暂停的进程ctrl+z

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

START 进程启动时间

TIME 占用cpu多长时间

COMMAND 进程名称

[root@linux-128 ~]# ps aux |grep -c kworker
21
[root@linux-128 ~]# ps aux |grep  kworker
root         5  0.0  0.0      0     0 ?        S<   10:21   0:00 [kworker/0:0H]
root        20  0.0  0.0      0     0 ?        S<   10:21   0:00 [kworker/2:0H]
root        36  0.0  0.0      0     0 ?        S    10:22   0:00 [kworker/2:1]
root        37  0.0  0.0      0     0 ?        S    10:22   0:01 [kworker/3:1]
root        55  0.0  0.0      0     0 ?        S    10:22   0:00 [kworker/u128:1]
root        57  0.1  0.0      0     0 ?        S    10:22   0:02 [kworker/0:1]
root        61  0.0  0.0      0     0 ?        S    10:22   0:00 [kworker/1:1]
root       256  0.0  0.0      0     0 ?        S    10:22   0:00 [kworker/u128:2]
root       290  0.0  0.0      0     0 ?        S    10:22   0:00 [kworker/1:2]
root       294  0.0  0.0      0     0 ?        S    10:22   0:00 [kworker/2:3]
root       295  0.0  0.0      0     0 ?        S    10:22   0:00 [kworker/3:2]
root       452  0.0  0.0      0     0 ?        S<   10:22   0:00 [kworker/0:1H]
root       736  0.0  0.0      0     0 ?        S<   10:22   0:00 [kworker/1:1H]
root      2075  0.0  0.0      0     0 ?        S<   10:22   0:00 [kworker/2:1H]
root      2142  0.0  0.0      0     0 ?        S<   10:22   0:00 [kworker/3:1H]
root      2217  0.0  0.0      0     0 ?        S<   10:24   0:00 [kworker/1:2H]
root      2232  0.0  0.0      0     0 ?        S<   10:34   0:00 [kworker/3:2H]
root      2263  0.0  0.0      0     0 ?        S    10:42   0:00 [kworker/0:2]
root      2286  0.0  0.0      0     0 ?        S<   10:48   0:00 [kworker/3:0H]
root      2307  0.0  0.0      0     0 ?        S    10:52   0:00 [kworker/0:0]


监控系统状态

netstat 查看网络状态

netstat -lnp 查看监听端口

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

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

ss -an 和nestat异曲同工
分享一个小技巧:

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

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

netstat -lnp 用来监听有哪些接口

[root@linux-128 ~]# netstat -lnp
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      947/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1216/master
tcp6       0      0 :::22                   :::*                    LISTEN      947/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      1216/master
udp        0      0 127.0.0.1:323           0.0.0.0:*                           553/chronyd
udp6       0      0 ::1:323                 :::*                                553/chronyd
raw6       0      0 :::58                   :::*                    7           587/NetworkManager
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     18635    1216/master          public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     18638    1216/master          public/qmgr
unix  2      [ ACC ]     STREAM     LISTENING     18661    1216/master          public/flush
unix  2      [ ACC ]     STREAM     LISTENING     18676    1216/master          public/showq
unix  2      [ ACC ]     STREAM     LISTENING     10897    1/systemd            /run/systemd/private
unix  2      [ ACC ]     SEQPACKET  LISTENING     10926    1/systemd            /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     9134     1/systemd            /run/systemd/journal/stdout
unix  2      [ ACC ]     STREAM     LISTENING     18642    1216/master          private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     18700    1216/master          private/scache
unix  2      [ ACC ]     STREAM     LISTENING     10949    1/systemd            /run/lvm/lvmetad.socket
unix  2      [ ACC ]     STREAM     LISTENING     10952    1/systemd            /run/lvm/lvmpolld.socket
unix  2      [ ACC ]     STREAM     LISTENING     18631    1216/master          public/pickup
unix  2      [ ACC ]     STREAM     LISTENING     18652    1216/master          private/defer
unix  2      [ ACC ]     STREAM     LISTENING     13291    1/systemd            /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     18655    1216/master          private/trace
unix  2      [ ACC ]     STREAM     LISTENING     18658    1216/master          private/verify
unix  2      [ ACC ]     STREAM     LISTENING     18664    1216/master          private/proxymap
unix  2      [ ACC ]     STREAM     LISTENING     18667    1216/master          private/proxywrite
unix  2      [ ACC ]     STREAM     LISTENING     18670    1216/master          private/smtp
unix  2      [ ACC ]     STREAM     LISTENING     18673    1216/master          private/relay
unix  2      [ ACC ]     STREAM     LISTENING     18679    1216/master          private/error
unix  2      [ ACC ]     STREAM     LISTENING     18682    1216/master          private/retry
unix  2      [ ACC ]     STREAM     LISTENING     18685    1216/master          private/discard
unix  2      [ ACC ]     STREAM     LISTENING     18688    1216/master          private/local
unix  2      [ ACC ]     STREAM     LISTENING     18691    1216/master          private/virtual
unix  2      [ ACC ]     STREAM     LISTENING     18694    1216/master          private/lmtp
unix  2      [ ACC ]     STREAM     LISTENING     18645    1216/master          private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     18649    1216/master          private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     18697    1216/master          private/anvil

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

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

netstat -an

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

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

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

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

netstat -lntp

netstat -lnp 查看监听的端口

[root@linux-128 ~]# 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      947/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1216/master
tcp6       0      0 :::22                   :::*                    LISTEN      947/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      1216/master

netstat -an tcp IP

[root@linux-128 ~]# 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.128:22       192.168.88.1:54651      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     18635    public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     18638    public/qmgr
unix  2      [ ACC ]     STREAM     LISTENING     18661    public/flush
unix  2      [ ACC ]     STREAM     LISTENING     18676    public/showq
unix  2      [ ACC ]     STREAM     LISTENING     10897    /run/systemd/private
unix  2      [ ]         DGRAM                    9115     /run/systemd/notify
unix  2      [ ]         DGRAM                    9117     /run/systemd/cgroups-agent
unix  2      [ ACC ]     SEQPACKET  LISTENING     10926    /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     9134     /run/systemd/journal/stdout
unix  5      [ ]         DGRAM                    9137     /run/systemd/journal/socket
unix  13     [ ]         DGRAM                    9139     /dev/log
unix  2      [ ]         DGRAM                    10934    /run/systemd/shutdownd
unix  2      [ ACC ]     STREAM     LISTENING     18642    private/tlsmgr
。。。。

.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-128 ~]# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
LISTEN 	 4
ESTABLISHED 	 1


tcpdump 工具

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

[root@linux-128 ~]# yum install -y tcpdump

[root@linux-128 ~]# tcpdump -nn  -i ens33

tcpdump -i ens33



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

tcpdump -n -i ens33



第2n是端口

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



tcpdump 命令:

-i:指定网卡

host:指定ip

port:指定端口

-c :指定包数量

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

length 长度

tcpdump -nn -i ens33 port 22



tcpdump -nn -i ens33 port 22 -c 6

[root@linux-128 ~]# tcpdump -nn -i ens33 port 22 -c 6
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
11:16:43.472559 IP 192.168.88.128.22 > 192.168.88.1.54651: Flags [P.], seq 3677319136:3677319348, ack 3881493294, win 468, length 212
11:16:43.473078 IP 192.168.88.1.54651 > 192.168.88.128.22: Flags [.], ack 212, win 16425, length 0
11:16:43.473799 IP 192.168.88.128.22 > 192.168.88.1.54651: Flags [P.], seq 212:504, ack 1, win 468, length 292
11:16:43.474308 IP 192.168.88.128.22 > 192.168.88.1.54651: Flags [P.], seq 504:668, ack 1, win 468, length 164
11:16:43.474661 IP 192.168.88.1.54651 > 192.168.88.128.22: Flags [.], ack 668, win 16311, length 0
11:16:43.474922 IP 192.168.88.128.22 > 192.168.88.1.54651: Flags [P.], seq 668:832, ack 1, win 468, length 164
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-128 ~]# tcpdump -nn -i ens33 port 22 -c 6 -w /tmp/1.cap
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
^C3 packets captured
4 packets received by filter
0 packets dropped by kernel


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

[root@linux-128 ~]# tcpdump -r /tmp/1.cap
reading from file /tmp/1.cap, link-type EN10MB (Ethernet)
11:18:02.971264 IP linux-128.ssh > 192.168.88.1.54651: Flags [P.], seq 3677321812:3677321960, ack 3881494042, win 468, length 148
11:18:02.971994 IP 192.168.88.1.54651 > linux-128.ssh: Flags [.], ack 148, win 16139, length 0
11:18:10.905692 IP 192.168.88.1.54651 > linux-128.ssh: Flags [P.], seq 1:53, ack 148, win 16139, length 52


wireshark 工具

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

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


用法:tshark
只需要记住这条命令;用的时候复制一下

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"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐