3個簡單、優(yōu)秀的Linux網(wǎng)絡監(jiān)視器
用 iftop、Nethogs 和 vnstat 了解更多關于你的網(wǎng)絡連接。
你可以通過這三個 Linux 網(wǎng)絡命令,了解有關你網(wǎng)絡連接的大量信息。iftop 通過進程號跟蹤網(wǎng)絡連接,Nethogs 可以快速顯示哪個在占用你的帶寬,而 vnstat 作為一個很好的輕量級守護進程運行,可以隨時隨地記錄你的使用情況。
iftop
iftop 監(jiān)聽你指定的網(wǎng)絡接口,并以 top 的形式展示連接。
這是一個很好的小工具,用于快速識別占用、測量速度,并保持網(wǎng)絡流量的總體運行??吹轿覀兪褂昧硕嗌賻捠欠浅A钊梭@訝的,特別是對于我們這些還記得使用電話線、調(diào)制解調(diào)器、讓人尖叫的 Kbit 速度和真實的實時波特率的老年人來說。我們很久以前就放棄了波特率,轉而使用比特率。波特率測量信號變化,有時與比特率相同,但大多數(shù)情況下不是。
如果你只有一個網(wǎng)絡接口,可以不帶選項運行 iftop。iftop 需要 root 權限:
- $ sudo iftop
當你有多個接口時,指定要監(jiān)控的接口:
- $ sudo iftop -i wlan0
就像 top 一樣,你可以在運行時更改顯示選項。
- h 切換幫助屏幕。
- n 切換名稱解析。
- s 切換源主機顯示,d 切換目標主機。
- s 切換端口號。
- N 切換端口解析。要全看到端口號,請關閉解析。
- t 切換文本界面。默認顯示需要 ncurses。我認為文本顯示更易于閱讀和更好的組織(圖1)。
- p 暫停顯示。
- q 退出程序。
當你切換顯示選項時,iftop 會繼續(xù)測量所有流量。你還可以選擇要監(jiān)控的單個主機。你需要主機的 IP 地址和網(wǎng)絡掩碼。我很好奇 Pandora 在我那可憐的帶寬中占用了多少,所以我先用 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
網(wǎng)絡掩碼是什么? 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
現(xiàn)在將地址和網(wǎng)絡掩碼提供給 iftop:
- $ sudo iftop -F 208.85.40.20/24 -i wlan0
這不是真的嗎?我很驚訝地發(fā)現(xiàn),我珍貴的帶寬對于 Pandora 很寬裕,每小時使用大約使用 500Kb。而且,像大多數(shù)流媒體服務一樣,Pandora 的流量也有峰值,其依賴于緩存來緩解阻塞。
你可以使用 -G 選項對 IPv6 地址執(zhí)行相同操作。請參閱手冊頁了解 iftop 的其他功能,包括使用自定義配置文件定制默認選項,并應用自定義過濾器(請參閱 PCAP-FILTER 作為過濾器參考)。
Nethogs
當你想要快速了解誰占用了你的帶寬時,Nethogs 是快速和容易的。以 root 身份運行,并指定要監(jiān)聽的接口。它顯示了空閑的應用程序和進程號,以便如果你愿意的話,你可以殺死它:
- $ 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 之間循環(huán);通過接收或發(fā)送的數(shù)據(jù)包進行排序;并調(diào)整刷新之間的延遲。請參閱 man nethogs,或者運行 nethogs -h。
vnstat
vnstat 是最容易使用的網(wǎng)絡數(shù)據(jù)收集器。它是輕量級的,不需要 root 權限。它作為守護進程運行,并記錄你網(wǎng)絡統(tǒng)計信息。vnstat 命令顯示累計的數(shù)據(jù):
- $ 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 |
它默認顯示所有的網(wǎng)絡接口。使用 -i 選項選擇單個接口。以這種方式合并多個接口的數(shù)據(jù):
- $ vnstat -i wlan0+eth0+eth1
你可以通過以下幾種方式過濾顯示:
- -h 以小時顯示統(tǒng)計數(shù)據(jù)。
- -d 以天數(shù)顯示統(tǒng)計數(shù)據(jù)。
- -w 和 -m 按周和月顯示統(tǒng)計數(shù)據(jù)。
- 使用 -l 選項查看實時更新。
此命令刪除 wlan1 的數(shù)據(jù)庫,并停止監(jiān)控它:
- $ vnstat -i wlan1 --delete
此命令為網(wǎng)絡接口創(chuàng)建別名。此例使用 Ubuntu 16.04 中的一個奇怪的接口名稱:
- $ vnstat -u -i enp0s25 --nick eth0
默認情況下,vnstat 監(jiān)視 eth0。你可以在 /etc/vnstat.conf 中更改此內(nèi)容,或在主目錄中創(chuàng)建自己的個人配置文件。請參見 man vnstat 以獲得完整的參考。
你還可以安裝 vnstati 創(chuàng)建簡單的彩色圖(圖2):
- $ vnstati -s -i wlx7cdd90a0a1c2 -o vnstat.png