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

監控io性能

iostat -x 磁盤使用

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

[root@yong-02 ~]# yum install -y sysstat
[root@yong-02 ~]# iostat
Linux 3.10.0-693.el7.x86_64 (yong-02) 	2018年05月07日 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           6.22    0.00    6.70    2.76    0.00   84.33

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              15.21       360.51        95.85     187493      49847
scd0              0.03         1.98         0.00       1028          0
dm-0             13.01       340.49        91.91     177078      47798

iostat和sar命令差很少,後面接數字
iostat 2,2秒顯示一次;sda bk_read/s kb_wrtn/s 讀寫速度前端

[root@yong-02 ~]# iostat 2
Linux 3.10.0-693.el7.x86_64 (yong-02) 	2018年05月07日 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.84    0.00    6.30    2.59    0.00   85.28

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              14.48       338.31        94.29     187509      52263
scd0              0.03         1.85         0.00       1028          0
dm-0             12.43       319.52        90.57     177094      50198

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
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

用sar -b 也能夠查看讀寫速度mysql

  • iostat -x 1 這裏最重要的是%util;這列表示你的IO等待,磁盤使用有多少時間佔用cpu,cpu有部分時間給進程經銷計算,也有一部分時間等待io的,等待磁盤讀和寫,這個時間比是多少,佔比是多大呢,這個就是%util。若是這個數字很大,50%60%那你的IO太差,他很是的忙,數字很大,讀和寫也很大,若是讀和寫兩列不大,可是util這列很大,說明你的硬盤存在問題和故障。若是你的硬盤很慢,確定會影響你的性能,即便你的CPU很快在厲害,硬盤跟不上也會存在很大的瓶頸的。記住iostat -x 關注%util這一列。
[root@yong-02 ~]# iostat -x 1
Linux 3.10.0-693.el7.x86_64 (yong-02) 	2018年05月07日 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.40    0.00    3.69    1.48    0.00   91.43

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.16    6.96    1.38   193.64    54.31    59.47     0.30   36.44   17.84  130.61   7.56   6.31
scd0              0.00     0.00    0.02    0.00     1.06     0.00   114.22     0.00    5.22    5.22    0.00   4.11   0.01
dm-0              0.00     0.00    6.17    1.00   182.89    52.18    65.57     0.31   43.67   18.61  198.89   8.00   5.73

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

iotop 磁盤使用

若是發現磁盤io很忙,究竟是那個進程在讀寫呢,咱們用iotop來查看。linux

[root@yong-02 ~]# yum install -y iotop

 

[root@yong-02 ~]# 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-root --system --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]
   12 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kdevtmpfs]
   13 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [netns]
   14 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khungtaskd]
   15 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [writeback]
   16 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kintegrityd]
   17 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [bioset]
   18 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kblockd]
   19 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [md]
  532 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [xfs-log/sda1]
  533 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [xfs-eofblocks/s]
  534 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [xfsaild/sda1]
   25 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kswapd0]
   26 be/5 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksmd]
   27 be/7 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khugepaged]

free命令

  • free 查看內存使用狀況
  • free -m / -g / -h
  • buffer/cache區別
  • 公式:total=used+free+buff/cache
  • avaliable包含free和buffer/cache剩餘

free 單位KBios

[root@yong-02 ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1008152      122500      622348        6884      263304      710160
Swap:       2097148           0     2097148

free -m 單位Msql

[root@yong-02 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            984         119         607           6         257         693
Swap:          2047           0        2047

free -h 單位G後端

[root@yong-02 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           984M        119M        607M        6.7M        257M        693M
Swap:          2.0G          0B        2.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@yong-02 ~]# top -bn1
top - 20:40:10 up  1:04,  1 user,  load average: 0.03, 0.02, 0.05
Tasks:  91 total,   1 running,  90 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.6 us, 11.1 sy,  0.0 ni, 83.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1008152 total,   601044 free,   130932 used,   276176 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   695940 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
    1 root      20   0  128164   6820   4060 S  0.0  0.7   0:08.53 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.82 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.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:04.10 rcu_sched
   10 root      rt   0       0      0      0 S  0.0  0.0   0:00.07 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
。。。
  1. ps aux 一盤工做中使用這個命令
[root@yong-02 ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.2  0.6 128164  6820 ?        Ss   19:35   0:08 /usr/lib/systemd/systemd --switched-root --system --deserialize
root         2  0.0  0.0      0     0 ?        S    19:35   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    19:35   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   19:35   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    19:35   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    19:35   0:00 [rcu_bh]
root         9  0.1  0.0      0     0 ?        R    19:35   0:04 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S    19:35   0:00 [watchdog/0]
root        12  0.0  0.0      0     0 ?        S    19:35   0:00 [kdevtmpfs]
root        13  0.0  0.0      0     0 ?        S<   19:35   0:00 [netns]
root        14  0.0  0.0      0     0 ?        S    19:35   0:00 [khungtaskd]
root        15  0.0  0.0      0     0 ?        S<   19:35   0:00 [writeback]
root        16  0.0  0.0      0     0 ?        S<   19:35   0:00 [kintegrityd]
root        17  0.0  0.0      0     0 ?        S<   19:35   0:00 [bioset]
root        18  0.0  0.0      0     0 ?        S<   19:35   0:00 [kblockd]
root        19  0.0  0.0      0     0 ?        S<   19:35   0:00 [md]
root        25  0.0  0.0      0     0 ?        S    19:35   0:00 [kswapd0]
root        26  0.0  0.0      0     0 ?        SN   19:35   0:00 [ksmd]
。。。。
  1. ps -elf 這二者顯示的內容是差很少的
  2. [root@yong-02 ~]# ps -elf
    F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
    4 S root         1     0  0  80   0 - 32041 ep_pol 19:35 ?        00:00:08 /usr/lib/systemd/systemd --switched-root --system --d
    1 S root         2     0  0  80   0 -     0 kthrea 19:35 ?        00:00:00 [kthreadd]
    1 S root         3     2  0  80   0 -     0 smpboo 19:35 ?        00:00:00 [ksoftirqd/0]
    1 S root         5     2  0  60 -20 -     0 worker 19:35 ?        00:00:00 [kworker/0:0H]
    1 S root         7     2  0 -40   - -     0 smpboo 19:35 ?        00:00:00 [migration/0]
    1 S root         8     2  0  80   0 -     0 rcu_gp 19:35 ?        00:00:00 [rcu_bh]
    1 R root         9     2  0  80   0 -     0 -      19:35 ?        00:00:04 [rcu_sched]
    5 S root        10     2  0 -40   - -     0 smpboo 19:35 ?        00:00:00 [watchdog/0]
    5 S root        12     2  0  80   0 -     0 devtmp 19:35 ?        00:00:00 [kdevtmpfs]
    1 S root        13     2  0  60 -20 -     0 rescue 19:35 ?        00:00:00 [netns]
    1 S root        14     2  0  80   0 -     0 watchd 19:35 ?        00:00:00 [khungtaskd]
    1 S root        15     2  0  60 -20 -     0 rescue 19:35 ?        00:00:00 [writeback]
    1 S root        16     2  0  60 -20 -     0 rescue 19:35 ?        00:00:00 [kintegrityd]
    1 S root        17     2  0  60 -20 -     0 rescue 19:35 ?        00:00:00 [bioset]
    1 S root        18     2  0  60 -20 -     0 rescue 19:35 ?        00:00:00 [kblockd]
    1 S root        19     2  0  60 -20 -     0 rescue 19:35 ?        00:00:00 [md]

     

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@yong-02 ~]# ps aux |grep -c kworker
10
[root@yong-02 ~]# ps aux |grep  kworker
root         5  0.0  0.0      0     0 ?        S<   19:35   0:00 [kworker/0:0H]
root        37  0.0  0.0      0     0 ?        S    19:35   0:00 [kworker/u128:1]
root       278  0.0  0.0      0     0 ?        S    19:35   0:00 [kworker/u128:2]
root       292  0.0  0.0      0     0 ?        S<   19:35   0:00 [kworker/0:1H]
root       545  0.0  0.0      0     0 ?        S<   19:36   0:00 [kworker/u129:0]
root       549  0.0  0.0      0     0 ?        S<   19:36   0:00 [kworker/u129:2]
root      1217  0.0  0.0      0     0 ?        S    20:35   0:00 [kworker/0:1]
root      1298  0.1  0.0      0     0 ?        S    20:39   0:00 [kworker/0:3]
root      1311  0.1  0.0      0     0 ?        S    20:44   0:00 [kworker/0:0]
root      1315  0.0  0.0 112676   980 pts/0    R+   20:45   0:00 grep --color=auto kworker

監控系統狀態

  • 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@yong-02 ~]# 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      990/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1094/master         
tcp6       0      0 :::22                   :::*                    LISTEN      990/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1094/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           657/chronyd         
udp6       0      0 ::1:323                 :::*                                657/chronyd         
raw6       0      0 :::58                   :::*                    7           684/NetworkManager  
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     12287    1/systemd            /run/lvm/lvmetad.socket
unix  2      [ ACC ]     STREAM     LISTENING     7715     1/systemd            /run/systemd/journal/stdout
unix  2      [ ACC ]     STREAM     LISTENING     12085    1/systemd            /run/systemd/private
unix  2      [ ACC ]     STREAM     LISTENING     19024    1094/master          public/pickup
unix  2      [ ACC ]     STREAM     LISTENING     14937    1/systemd            /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     19028    1094/master          public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     19031    1094/master          public/qmgr
unix  2      [ ACC ]     STREAM     LISTENING     19053    1094/master          public/flush
unix  2      [ ACC ]     STREAM     LISTENING     19068    1094/master          public/showq
unix  2      [ ACC ]     STREAM     LISTENING     19035    1094/master          private/tlsmgr
…………

查看監聽的接口後,服務端到底跟哪些客戶端進行通訊,以及客戶端跟咱們服務端通訊過程到底十一個什麼樣的狀態?
是鏈接進行數據傳輸仍是二者剛剛創建鏈接,仍是通訊完成後保持一個鏈接而正在等待:要用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 -lntp 查看監聽tcp的端口

[root@yong-02 ~]# 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      990/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1094/master         
tcp6       0      0 :::22                   :::*                    LISTEN      990/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1094/master

netstat -an tcp IP

[root@yong-02 ~]# 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.180.135:22      192.168.180.1:56906     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     12287    /run/lvm/lvmetad.socket
unix  2      [ ]         DGRAM                    7699     /run/systemd/notify
unix  2      [ ]         DGRAM                    7701     /run/systemd/cgroups-agent
unix  2      [ ]         DGRAM                    15898    /var/run/chrony/chronyd.sock
unix  2      [ ACC ]     STREAM     LISTENING     7715     /run/systemd/journal/stdout
unix  5      [ ]         DGRAM                    7718     /run/systemd/journal/socket
unix  14     [ ]         DGRAM                    7720     /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     12085    /run/systemd/private
unix  2      [ ACC ]     STREAM     LISTENING     19024    public/pickup
unix  2      [ ACC ]     STREAM     LISTENING     14937    /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     19028    public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     19031    public/qmgr
unix  2      [ ACC ]     STREAM     LISTENING     19053    public/flush
…………

.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@yong-02 ~]# 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@yong-02 ~]# yum install tcpdump
[root@yong-02 ~]# 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 指定22端口

  • tcpdump -nn -i ens33 port 22 -c 10 抓10個包

[root@yong-02 ~]# tcpdump -nn -i ens33 port 22 -c 10
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:36:02.536663 IP 192.168.180.135.22 > 192.168.180.1.56906: Flags [P.], seq 1439628768:1439628964, ack 2081619192, win 264, length 196
21:36:02.536990 IP 192.168.180.1.56906 > 192.168.180.135.22: Flags [.], ack 196, win 2050, length 0
21:36:02.537623 IP 192.168.180.135.22 > 192.168.180.1.56906: Flags [P.], seq 196:472, ack 1, win 264, length 276
21:36:02.537939 IP 192.168.180.135.22 > 192.168.180.1.56906: Flags [P.], seq 472:636, ack 1, win 264, length 164
21:36:02.538046 IP 192.168.180.1.56906 > 192.168.180.135.22: Flags [.], ack 636, win 2049, length 0
21:36:02.538223 IP 192.168.180.135.22 > 192.168.180.1.56906: Flags [P.], seq 636:896, ack 1, win 264, length 260
21:36:02.538424 IP 192.168.180.135.22 > 192.168.180.1.56906: Flags [P.], seq 896:1060, ack 1, win 264, length 164
21:36:02.538591 IP 192.168.180.1.56906 > 192.168.180.135.22: Flags [.], ack 1060, win 2047, length 0
21:36:02.538762 IP 192.168.180.135.22 > 192.168.180.1.56906: Flags [P.], seq 1060:1320, ack 1, win 264, length 260
21:36:02.538997 IP 192.168.180.135.22 > 192.168.180.1.56906: Flags [P.], seq 1320:1484, ack 1, win 264, length 164
10 packets captured
11 packets received by filter
0 packets dropped by kernel
  • tcpdump -nn -i ens33 port 22 -c 6 -w /tmp/a.cap 寫入指定文件裏,將包的內容寫入文件裏面,是真真的包,若是不加-w直接在屏幕上顯示的不是數據包,而是數據流向
[root@yong-02 ~]# tcpdump -nn -i ens33 port 22 -c 10 -w /tmp/a.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
  • tcpdump -r 查看數據流,不是數據包
[root@yong-02 ~]# tcpdump -r /tmp/a.cap 
reading from file /tmp/a.cap, link-type EN10MB (Ethernet)
21:37:05.911668 IP yong-02.ssh > 192.168.180.1.56906: Flags [P.], seq 1439631392:1439631524, ack 2081620060, win 264, length 132
21:37:05.911849 IP 192.168.180.1.56906 > yong-02.ssh: Flags [.], ack 132, win 2048, length 0
21:37:19.519031 IP 192.168.180.1.56906 > yong-02.ssh: Flags [P.], seq 1:37, ack 132, win 2048, length 36
21:37:19.559309 IP yong-02.ssh > 192.168.180.1.56906: Flags [.], ack 37, win 264, length 0
21:37:21.878678 IP 192.168.180.1.60396 > yong-02.ssh: Flags [S], seq 506333761, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
21:37:21.878775 IP yong-02.ssh > 192.168.180.1.60396: Flags [S.], seq 3917968579, ack 506333762, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
21:37:21.878958 IP 192.168.180.1.60396 > yong-02.ssh: Flags [.], ack 1, win 2053, length 0
21:37:21.915472 IP yong-02.ssh > 192.168.180.1.60396: Flags [P.], seq 1:22, ack 1, win 229, length 21
21:37:21.956067 IP 192.168.180.1.60396 > yong-02.ssh: Flags [.], ack 22, win 2053, length 0
21:37:22.024462 IP 192.168.180.1.60396 > yong-02.ssh: Flags [P.], seq 1:50, ack 22, win 2053, length 49

wireshark 工具

若是沒有須要先安裝一下 yum install -y wireshark

[root@yong-02 ~]# 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"
相關文章
相關標籤/搜索