三款簡單而優秀的 Linux 網路監視工具
你可以通過這三個 Linux 命令了解當前網路的大量信息。iftop
通過進程號跟蹤網路連接,nethogs
快速告知你哪些進程在佔用你的帶寬,而 vnstat
以一個良好的輕量級守護進程在後台運行,並實時記錄你的網路使用情況。
iftop
令人稱讚的 iftop
可以監聽您指定的網路介面,並以 top 的樣式呈現。
這是一個不錯的小工具,可以用於找出網路擁塞,測速和維持網路流量總量。看到自己到底在用多少帶寬往往是非常驚人的,尤其是對於我們這些仍然記得電話線路、數據機,「高速」到令人驚叫的 kb 和實時波特率的老人們。我們在很久之前就不再使用波特率,轉而鍾情於比特率。波特率用于衡量信號變化,儘管有時候與比特率相同,但大多數情況下並非如此。
如果你只有一個網路介面,直接運行 iftop
即可。不過 iftop
需要 root 許可權:
$ sudo iftop
如果你有多個網路介面,那就指定你要監控的介面:
$ sudo iftop -i wlan0
就像 top
命令一樣,你可以在命令運行時更改顯示選項:
h
切換幫助界面。n
是否解析域名。s
切換源地址的顯示,d
則切換目的地址的顯示。S
是否顯示埠號。N
是否解析埠;若關閉解析則顯示埠號。t
切換文本顯示界面。默認的顯示方式需要 ncurses。我個人認為圖 1 的顯示方式在組織性和可讀性都更加良好。p
暫停顯示更新。q
退出程序。
![text display](/data/attachment/album/201801/27/122519kjjtdh5fftzwfpzp.png "text display")
圖 1:組織性和可讀性良好的文本顯示。
當你切換顯示設置的時候,iftop
並不會中斷監測流量。當然你也可以單獨監測一台主機。而這需要該主機的 IP 地址和子網掩碼。現在,我很好奇 Pandora(LCTT 譯註:一家美國的電台公司)能給我貧瘠的帶寬頻來多大的負載。因此我首先使用 dig 命令找到他們的 IP 地址:
$ dig A pandora.com
[...]
;; ANSWER SECTION:
pandora.com. 267 IN A 208.85.40.20
pandora.com. 267 IN A 208.85.40.50
那子網掩碼呢?ipcalc 會告訴我們:
$ ipcalc -b 208.85.40.20
Address: 208.85.40.20
Netmask: 255.255.255.0 = 24
Wildcard: 0.0.0.255
=>
Network: 208.85.40.0/24
現在,將 IP 地址和子網掩碼提供給 iftop
:
$ sudo iftop -F 208.85.40.20/24 -i wlan0
很棒的不是么?而我也很驚奇地發現,Pandora 在我的網路上,每小時大約使用 500kb。並且就像大多數流媒體服務一樣,Pandora 的流量在迅速增長,並依靠緩存穩定下來。
你可以使用 -G
選項對 IPv6 地址執行相同的操作。查閱友好的 man 可以幫助你了解 iftop
的其他功能,包括使用個人配置文件自定義你的默認選項,以及使用自定義過濾(請參閱 PCAP-FILTER 來獲取過濾指南)。
nethogs
當你想要快速了解是誰在吸取你的帶寬的時候,nethogs
是個快速而簡單的方法。你需要以 root 身份運行並指定要監聽的介面。它會給你顯示大量的應用程序及其進程號,所以如果你想的話,你可以藉此殺死任一進程。
$ sudo nethogs wlan0
nethogs version 0.8.1
PID USER PROGRAM DEV SENT RECEIVED
7690 carla /usr/lib/firefox wlan0 12.494 556.580 KB/sec
5648 carla .../chromium-browser wlan0 0.052 0.038 KB/sec
TOTAL 12.546 556.618 KB/sec
nethogs
並沒有多少選項:在 kb/s、kb、b、mb之間循環,按接收和發送的數據包排序,調整刷新延遲。具體請看man nethogs
,或者是運行 nethogs -h
。
vnstat
vnstat是最容易使用的網路數據收集工具。它十分輕量並且不需要 root 許可權。它以守護進程在後台運行,因此可以實時地記錄你的網路數據。單個 vnstat
命令就可以顯示所累計的數據。
$ vnstat -i wlan0
Database updated: Tue Oct 17 08:36:38 2017
wlan0 since 10/17/2017
rx: 45.27 MiB tx: 3.77 MiB total: 49.04 MiB
monthly
rx | tx | total | avg. rate
------------------------+-------------+-------------+------------ Oct '17 45.27 MiB | 3.77 MiB | 49.04 MiB | 0.28 kbit/s
------------------------+-------------+-------------+------------ estimated 85 MiB | 5 MiB | 90 MiB |
daily
rx | tx | total | avg. rate
------------------------+-------------+-------------+------------ today 45.27 MiB | 3.77 MiB | 49.04 MiB | 12.96 kbit/s
------------------------+-------------+-------------+------------ estimated 125 MiB | 8 MiB | 133 MiB |
默認情況下它會顯示所有的網路介面。使用 -i
選項來選擇某個介面。也可以像這樣合併多個介面的數據:
$ vnstat -i wlan0+eth0+eth1
你可以通過這幾種方式過濾數據顯示:
-h
按小時顯示統計信息。-d
按天顯示統計信息.-w
和-m
分別按周和月份來顯示統計信息。- 使用
-l
選項查看實時更新。
以下這條命令將會刪除 wlan1 的資料庫並不再監視它:
$ vnstat -i wlan1 --delete
而下面這條命令將會為你的一個網路介面創建一個別名。這個例子使用了 Ubuntu 16.04 的一個有線介面名稱:
$ vnstat -u -i enp0s25 --nick eth0
默認情況下,vnstat 會監視 eth0。你可以在 /etc/vnstat.conf
對它進行修改,或者在你的家目錄下創建你自己的個人配置文件。請參閱 man vnstat
以獲取完整的指南。
你也可以安裝 vnstati
來創建簡單的彩圖(圖 2):
$ vnstati -s -i wlx7cdd90a0a1c2 -o vnstat.png
![vnstati](/data/attachment/album/201801/27/122520bdn47s4s847n7j4j.png "vnstati")
圖 2:你可以使用vnstati來創建簡單的彩圖。
請參閱 man vnstati
以獲取完整的選項。
欲了解 Linux 的更多信息,可以通過學習 Linux 基金會和 edX 的免費課程,「Linux 入門」。
via: https://www.linux.com/learn/intro-to-linux/2017/10/3-simple-excellent-linux-network-monitors
作者:CARLA SCHRODER 譯者:KeyLD 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive