華文網

3 個簡單優秀的 Linux 網路監視器

前言

你可以通過Linux下這三個iftop、Nethogs和vnstat的網路命令,瞭解有關你網路連接的大量資訊。

iftop通過進程號跟蹤網路連接,Nethogs可以快速顯示哪個在佔用你的頻寬,而vnstat作為一個很好的羽量級守護進程運行,可以隨時隨地記錄你的使用情況。

iftop

iftop監聽你指定的網路介面,並以top的形式展示連接。

這是一個很好的小工具,用於快速識別佔用、測量速度,並保持網路流量的總體運行。看到我們使用了多少頻寬是非常令人驚訝的,特別是對於我們這些還記得使用電話線、數據機、讓人尖叫的 Kbit 速度和真實的即時串列傳輸速率的老年人來說。

我們很久以前就放棄了串列傳輸速率,轉而使用位元速率。串列傳輸速率測量信號變化,有時與位元速率相同,但大多數情況下不是。

如果你只有一個網路介面,可以不帶選項運行iftop。iftop需要root許可權:

$ sudo iftop

當你有多個介面時,指定要監控的介面:

$ sudo iftop -i wlan0

就像top一樣,你可以在運行時更改顯示選項。

h切換説明螢幕。

n 切換名稱解析。

s 切換源主機顯示

d切換目標主機。

s 切換埠號。

N 切換埠解析。要全看到埠號,請關閉解析。

t 切換文本介面。預設顯示需要 ncurses。我認為文本顯示更易於閱讀和更好的組織(如下圖)。

p 暫停顯示。

q 退出程式。

文本顯示是可讀的和可組織的

當你切換顯示選項時,

iftop會繼續測量所有流量。你還可以選擇要監控的單個主機。你需要主機的IP位址和網路遮罩。我很好奇Pandora在我那可憐的頻寬中佔用了多少,所以我先用dig找到它們的IP地址:

$ dig A pandora.com[...];; ANSWER SECTION:pandora.com. 267 IN A 208.85.40.20pandora.com. 267 IN A 208.85.40.50

網路遮罩是什麼?ipcalc告訴我們:

$ ipcalc -b 208.85.40.20Address: 208.85.40.20 Netmask: 255.255.255.0 = 24Wildcard: 0.0.0.255 =>Network: 208.85.40.0/24

現在將位址和網路遮罩提供給iftop:

$ sudo iftop -F 208.85.40.20/24 -i wlan0

這不是真的嗎?我很驚訝地發現,頻寬對於Pandora很寬裕,每小時使用大約使用500Kb。而且,像大多數流媒體服務一樣,Pandora的流量也有峰值,其依賴於緩存來緩解阻塞。

你可以使用-G選項對IPv6位址執行相同操作。請參閱手冊頁瞭解iftop的其他功能,包括使用自訂設定檔定制預設選項,並應用自訂篩檢程式(請參閱PCAP-FILTER作為篩檢程式參考)。

Nethogs

當你想要快速瞭解誰佔用了你的頻寬時,Nethogs是快速和容易的。以root身份運行,並指定要監聽的介面。它顯示了空閒的應用程式和進程號,以便如果你願意的話,你可以殺死它:

$ sudo nethogs wlan0NetHogs version 0.8.1PID USER PROGRAM DEV SENT RECEIVED 7690 carla /usr/lib/firefox wlan0 12.494 556.580 KB/sec5648 carla .../chromium-browser wlan0 0.052 0.038 KB/secTOTAL 12.546 556.618 KB/sec

Nethogs選項很少:在 kb/s、kb、b和mb之間迴圈;通過接收或發送的資料包進行排序;並調整刷新之間的延遲。

請參閱man nethogs,或者運行nethogs -h。

vnstat

vnstat是最容易使用的網路資料收集器。它是羽量級的,不需要root許可權。它作為守護進程運行,並記錄你網路統計資訊。

vnstat命令顯示累計的資料:

$ vnstat -i wlan0Database 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創建簡單的彩色圖(下圖):

$ vnstati -s -i wlx7cdd90a0a1c2 -o vnstat.png

你可以使用 vnstati 創建簡單的彩色圖表

有關完整選項,請參見man vnstati。

-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創建簡單的彩色圖(下圖):

$ vnstati -s -i wlx7cdd90a0a1c2 -o vnstat.png

你可以使用 vnstati 創建簡單的彩色圖表

有關完整選項,請參見man vnstati。