監控io性能、free命令、ps命令、查看網絡狀態、linux下抓包

監控io性能

iostat -x 磁盤使用

iostat 在安裝sysstat的時候會自動安裝上這個命令。它和sar是同一個包

[root@localhost ~]# yum install -y sysstat
[root@localhost ~]# iostat
Linux 3.10.0-514.el7.x86_64 (linux-128) 	20171128日 	_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@localhost ~]# iostat 1
Linux 3.10.0-514.el7.x86_64 (linux-128) 	20171128日 	_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@localhost ~]# iostat -x 1
Linux 3.10.0-514.el7.x86_64 (linux-128) 	20171128日 	_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@localhost ~]# 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@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1875748      115996     1453008        8748      306744     1583468
Swap:       4194300           0     4194300

free -m 單位M

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

free -h 單位G

[root@localhost ~]# 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
  1. total 是整個內存大小 total=used+free+buff/cache

  2. used 使用了多少內存

  3. free 剩餘多少內存 正在剩餘的內存是第二行的free

  4. 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 查看系統當中所有的進程

  1. top -bn1 也可以顯示所有的進程
[root@localhost ~]# 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
。。。
  1. ps aux 一盤工作中使用這個命令
[root@localhost ~]# 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

  1. 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@localhost ~]# ps aux |grep -c kworker
21
[root@localhost ~]# 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 命令是用來查看網絡連接狀態,系統所有開放端口,路由表等信息

  1. netstat -lnp 用來監聽有哪些接口
[root@localhost ~]# 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

  1. 查看服務端和客戶端之間的狀態
  2. 用這個值去衡量服務器有沒有壓力,有沒有併發,併發是多少
  3. netstat -an |grep 122.122.69.86:80|grep -ic estab -i是忽略大小寫 -c符合要求的行數
    這臺服務器的併發數是884.意思是在這一秒或者這一個時刻內有884個連接。

netstat -lntp

netstat -lnp 查看監聽的端口

[root@localhost ~]# 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@localhost ~]# 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@localhost ~]# 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@localhost ~]# yum install -y tcpdump
[root@localhost ~]# 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 長度

  1. tcpdump -nn -i ens33 port 22 輸入圖片說明

  2. tcpdump -nn -i ens33 port 22 -c 6

[root@localhost ~]# 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
  1. tcpdump -nn -i ens33 port 22 -c 6 -w /tmp/1.cap 寫入指定文件裏,將包的內容寫入文件裏面,是真真的包,如果不加-w直接在屏幕上顯示的不是數據包,而是數據流向
[root@localhost ~]# 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

  1. tcpdump -r 查看數據流,不是數據包
[root@localhost ~]# 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@localhost ~]# 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"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章