推薦三款專門為運(yùn)維小白而準(zhǔn)備的優(yōu)秀工具!
通過 iftop、 nethogs 和 vnstat 詳細(xì)了解你的網(wǎng)絡(luò)連接狀態(tài)。你可以通過這三個 Linux 命令了解當(dāng)前網(wǎng)絡(luò)的大量信息。iftop 通過進(jìn)程號跟蹤網(wǎng)絡(luò)連接,nethogs 快速告知你哪些進(jìn)程在占用你的帶寬,而 vnstat 以一個良好的輕量級守護(hù)進(jìn)程在后臺運(yùn)行,并實時記錄你的網(wǎng)絡(luò)使用情況。
iftop
令人稱贊的 iftop 可以監(jiān)聽您指定的網(wǎng)絡(luò)接口,并以 top 的樣式呈現(xiàn)。
這是一個不錯的小工具,可以用于找出網(wǎng)絡(luò)擁塞,測速和維持網(wǎng)絡(luò)流量總量??吹阶约旱降自谟枚嗌賻捦欠浅s@人的,尤其是對于我們這些仍然記得電話線路、調(diào)制解調(diào)器,“高速”到令人驚叫的 kb 和實時波特率的老人們。我們在很久之前就不再使用波特率,轉(zhuǎn)而鐘情于比特率。波特率用于衡量信號變化,盡管有時候與比特率相同,但大多數(shù)情況下并非如此。
如果你只有一個網(wǎng)絡(luò)接口,直接運(yùn)行 iftop 即可。不過 iftop 需要 root 權(quán)限:

如果你有多個網(wǎng)絡(luò)接口,那就指定你要監(jiān)控的接口:

就像 top 命令一樣,你可以在命令運(yùn)行時更改顯示選項:
-
h 切換幫助界面。
-
n 是否解析域名。
-
s 切換源地址的顯示,d 則切換目的地址的顯示。
-
S 是否顯示端口號。
-
N 是否解析端口;若關(guān)閉解析則顯示端口號。
-
t 切換文本顯示界面。默認(rèn)的顯示方式需要 ncurses。我個人認(rèn)為圖 1 的顯示方式在組織性和可讀性都更加良好。
-
p 暫停顯示更新。
-
q 退出程序。

圖 1:組織性和可讀性良好的文本顯示。
當(dāng)你切換顯示設(shè)置的時候,iftop 并不會中斷監(jiān)測流量。當(dāng)然你也可以單獨監(jiān)測一臺主機(jī)。而這需要該主機(jī)的 IP 地址和子網(wǎng)掩碼。現(xiàn)在,我很好奇 Pandora(LCTT 譯注:一家美國的電臺公司)能給我貧瘠的帶寬帶來多大的負(fù)載。因此我首先使用 dig 命令找到他們的 IP 地址:

那子網(wǎng)掩碼呢?ipcalc 會告訴我們:

現(xiàn)在,將 IP 地址和子網(wǎng)掩碼提供給 iftop:

很棒的不是么?而我也很驚奇地發(fā)現(xiàn),Pandora 在我的網(wǎng)絡(luò)上,每小時大約使用 500kb。并且就像大多數(shù)流媒體服務(wù)一樣,Pandora 的流量在迅速增長,并依靠緩存穩(wěn)定下來。
你可以使用 -G 選項對 IPv6 地址執(zhí)行相同的操作。查閱友好的 man 可以幫助你了解 iftop 的其他功能,包括使用個人配置文件自定義你的默認(rèn)選項,以及使用自定義過濾。
nethogs
當(dāng)你想要快速了解是誰在吸取你的帶寬的時候,nethogs 是個快速而簡單的方法。你需要以 root 身份運(yùn)行并指定要監(jiān)聽的接口。它會給你顯示大量的應(yīng)用程序及其進(jìn)程號,所以如果你想的話,你可以借此殺死任一進(jìn)程。

nethogs 并沒有多少選項:在 kb/s、kb、b、mb之間循環(huán),按接收和發(fā)送的數(shù)據(jù)包排序,調(diào)整刷新延遲。具體請看man nethogs,或者是運(yùn)行 nethogs -h。
vnstat
vnstat是最容易使用的網(wǎng)絡(luò)數(shù)據(jù)收集工具。它十分輕量并且不需要 root 權(quán)限。它以守護(hù)進(jìn)程在后臺運(yùn)行,因此可以實時地記錄你的網(wǎng)絡(luò)數(shù)據(jù)。單個 vnstat 命令就可以顯示所累計的數(shù)據(jù)。

默認(rèn)情況下它會顯示所有的網(wǎng)絡(luò)接口。使用 -i 選項來選擇某個接口。也可以像這樣合并多個接口的數(shù)據(jù):

你可以通過這幾種方式過濾數(shù)據(jù)顯示:
-
-h 按小時顯示統(tǒng)計信息。
-
-d?按天顯示統(tǒng)計信息.
-
-w 和?-m 分別按周和月份來顯示統(tǒng)計信息。
-
使用?-l 選項查看實時更新。
以下這條命令將會刪除 wlan1 的數(shù)據(jù)庫并不再監(jiān)視它:

而下面這條命令將會為你的一個網(wǎng)絡(luò)接口創(chuàng)建一個別名。這個例子使用了 Ubuntu 16.04 的一個有線接口名稱:

默認(rèn)情況下,vnstat 會監(jiān)視 eth0。你可以在 /etc/vnstat.conf 對它進(jìn)行修改,或者在你的家目錄下創(chuàng)建你自己的個人配置文件。請參閱 man vnstat 以獲取完整的指南。
你也可以安裝 vnstati 來創(chuàng)建簡單的彩圖(圖 2):


