1. 程式人生 > >網絡卡流量監控、檢視程序

網絡卡流量監控、檢視程序

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

監控網絡卡流量

sar命令

  • sar命令是Linux系統中特別強大的一個命令,通過 sar 命令可以全面的獲取系統的 CPU、執行佇列、磁碟 I/O、交換區、記憶體、 cpu 中斷、網路等效能資料。
  • sar命令和iostat命令都是由systat安裝包安裝的

sar 命令列的常用格式:

  • sar [options] [-A] [-o file] t [n] 在命令列中, n 和 t 兩個引數組合起來定義取樣間隔和次數, t 為取樣間隔, 是必須有的引數, n 為取樣次數,是可選的,預設值是 1, -o file 表示將命令結果以二進位制格式存放在檔案中, file 在此處不是關鍵字,是檔名。 options 為命令列選項:

  • -A:所有報告的總和。

  • -u: CPU 利用率

  • -v:程序、節點、檔案和鎖表狀態。

  • -p:像是當前系統中指定 CPU 使用資訊。

  • -d:硬碟使用報告。

  • -r:顯示系統記憶體的使用情況。

  • -n: 顯示網路執行狀態。 引數後面可跟 DEV、 EDEV、 SOCK 和 FULL。 DEV 顯示網路介面資訊, EDEV 顯示網路錯誤的統計資料, SOCK 顯示套接字資訊, FULL 顯示前三引數所有資訊。

  • -q:顯示執行佇列的大小,它與系統當時的平均負載相同

  • -B:記憶體分頁情況

  • -R:顯示程序在取樣時間內的活動情況。

  • -g:串列埠 I/O 的情況。

  • -b:緩衝區使用情況。

  • -a:檔案讀寫情況。

  • -c:系統呼叫情況。

  • -R:程序的活動情況。

  • -y:終端裝置活動情況。

  • -W:系統交換活動。

使用sar命令來檢視網絡卡流量情況,下面這個情況是檢視網絡卡流量情況,一秒讀取一次,一共讀取2次。

[root@localhost ~]# sar -n DEV 1 2
Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 	03/02/2019 	_x86_64_	(4 CPU)

01:41:13 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
01:41:14 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:41:14 AM     ens33      0.00      0.00      0.00      0.00      0.00      0.00      0.00

01:41:14 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
01:41:15 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01:41:15 AM     ens33      0.99      1.98      0.06      0.48      0.00      0.00      0.00

Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:        ens33      0.50      0.99      0.03      0.24      0.00      0.00      0.00
  • 上面的輸出結果中,IFACE 是網絡卡名字;
  • rxpck/s是網絡卡每秒接收資料包的數量;
  • txpck/s是網絡卡每秒傳送資料包的數量;
  • rxkB/s是網絡卡每秒接收資料的大小;
  • txkB/s是網絡卡每秒傳送資料的大小;
  • 其餘內容不用太關注。

nload命令

  • nload命令是動態檢視網絡卡流量情況。
  • nload安裝包是由擴充套件源提供的,需要先安裝擴充套件源,yum install -y epel-release 然後再安裝yum install nload -y
  • 直接執行nload就可以檢視網絡卡流量,按上下箭頭可以切換不同的網絡卡。
  • 或者使用nload eth0這樣檢視指定網絡卡流量。

ethtool 和 mii-tool 命令

  • ethtool eth0 這個命令可以檢視網絡卡的資訊,以及有沒有網線連線。
  • mii-tool eth0 可以檢視網口有沒有網線連線
[root@localhost ~]# ethtool ens33
Settings for ens33:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Speed: 1000Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: on
	MDI-X: off (auto)
	Supports Wake-on: d
	Wake-on: d
	Current message level: 0x00000007 (7)
			       drv probe link
	Link detected: yes
[root@localhost ~]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok

檢視程序

ps命令

  • 直接執行ps命令是檢視當前終端下的程序
[root@localhost ~]# ps
   PID TTY          TIME CMD
  9941 pts/0    00:00:00 bash
 10128 pts/0    00:00:00 ps
  • ps -aux 可以檢視系統中所有使用者的程序
[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.1  0.1 125416  3916 ?        Ss   01:24   0:07 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    01:24   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    01:24   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   01:24   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    01:24   0:02 [kworker/u256:0]
root          7  0.0  0.0      0     0 ?        S    01:24   0:01 [migration/0]
root          8  0.0  0.0      0     0 ?        S    01:24   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        S    01:24   0:06 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S<   01:24   0:00 [lru-add-drain]
  • 輸出結果:
    • USER 使用者
    • PID 程序號
    • %CPU CPU使用率
    • %MEM記憶體使用率
    • VSZ虛擬記憶體大小
    • RSS實體記憶體大小
    • TTY ,顯示?的tty都是後臺執行的。
    • STAT:程序狀態
    • START,程序啟動的時間
    • TIME 程序空閒的時間
    • COMMAND 對應的指令
  • 上面輸出的結果中的STAT一列顯示的內容有:
    • S Sleep
    • R Running
    • s 父程序
    • N 低優先順序
    • < 高優先順序
    • +前臺程序
    • l 多執行緒程序
    • Z 殭屍程序
  • ps -elf 跟aux類似,也是檢視系統中所有的程序
[root@localhost ~]# 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 - 31354 ep_pol 01:24 ?        00:00:07 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
1 S root          2      0  0  80   0 -     0 kthrea 01:24 ?        00:00:00 [kthreadd]
1 S root          3      2  0  80   0 -     0 smpboo 01:24 ?        00:00:00 [ksoftirqd/0]
1 S root          5      2  0  60 -20 -     0 worker 01:24 ?        00:00:00 [kworker/0:0H]
1 S root          6      2  0  80   0 -     0 worker 01:24 ?        00:00:02 [kworker/u256:0]
1 S root          7      2  0 -40   - -     0 smpboo 01:24 ?        00:00:01 [migration/0]
1 S root          8      2  0  80   0 -     0 rcu_gp 01:24 ?        00:00:00 [rcu_bh]
1 S root          9      2  0  80   0 -     0 rcu_gp 01:24 ?        00:00:06 [rcu_sched]
1 S root         10      2  0  60 -20 -     0 rescue 01:24 ?        00:00:00 [lru-add-drain]
  • ps -eLf 檢視執行緒
[root@localhost ~]# ps -eLf
UID         PID   PPID    LWP  C NLWP STIME TTY          TIME CMD
root          1      0      1  0    1 01:24 ?        00:00:07 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0      2  0    1 01:24 ?        00:00:00 [kthreadd]
root          3      2      3  0    1 01:24 ?        00:00:00 [ksoftirqd/0]
root          5      2      5  0    1 01:24 ?        00:00:00 [kworker/0:0H]
root          6      2      6  0    1 01:24 ?        00:00:02 [kworker/u256:0]
root          7      2      7  0    1 01:24 ?        00:00:01 [migration/0]
root          8      2      8  0    1 01:24 ?        00:00:00 [rcu_bh]
root          9      2      9  0    1 01:24 ?        00:00:06 [rcu_sched]
root         10      2     10  0    1 01:24 ?        00:00:00 [lru-add-drain]
  • ls /proc/pid 可以檢視一個程序的