一般的 Linux 管理者大概中知道 top 這個指令,他可以用來監控系統的狀態,包含 CPU 使用率、記憶體使用率、系統 loading 與各個 process 的狀況,可是卻缺少了網路的使用狀況,像我這種常常在用網路的人,最在意的就是網路速度,有時候網路很慢就很想知道是怎麼回事,但是偏偏 top 中沒有這個功能。


這裡就介紹一個專門監控網路流量的工具 iftop,顧名思義他就是 interface 版的 top,一般的 Linux distribition 通常預設是沒有安裝這個工具的,使用前要先安裝,若是 Ubuntu Linux 則可利用 apt 來裝:

sudo apt-get install iftop

其他的 Linux 應該大都有收錄 iftop,像如果是 Red Hat 系列的 Linux 也可以用 rpm 來裝,若是真的沒有的話,就到 iftop官方網站下載原始碼來編譯與安裝,因為只是一個小工具,所以編譯與安裝都很簡單,解壓縮之後,就按照一般的程序編譯安裝:

./configure
make
sudo make install

準備工作大約就是這樣,安裝完 iftop 就可以來使用了,一般的電腦正常來說只要在終端機(terminal)中直接執行 iftop 就可以使用了:

sudo iftop

畫面就像這樣:

iftop_1

如果你的電腦不只有一張網路卡,或是有使用 USB 無線網路卡等,這時候就要使用 -i 參數指定想要監控的網路卡,通常主要的流量都是在對外的那張網路卡上,沒有指定正確的話可能就看不到資料。譬如說要指定第一張無線網路卡:

sudo iftop -i wlan0

以下是 iftop 常用的參數:

  • -h:顯示簡短的使用說明。
  • -n:不執行 DNS 反解,直接顯示 IP 位址。
  • -N:直接顯示埠號(port),不轉換為服務名稱。
  • -P:以 promiscuous 模式執行 iftop。
  • -i:指定網路卡(interface)。
  • -B:流量以 Bytes 為單位。
  • -F:指定要監看的 IPv4 網路區段。
  • -G:指定要監看的 IPv6 網路區段。
  • -f:指定 filter code。

執行 iftop 之後,也有許多快速鍵可以使用:

Host display:

  • n:開啓或關閉 DNS 反解。
  • s:顯示或隱藏來源(source)IP 位址。
  • d:顯示或隱藏目的(destination)IP 位址。
  • t:切換輸入輸出的流量顯示模式。

Port display:

  • N:啓動或關閉埠號(port)轉換為服務名稱功能。
  • S:顯示或隱藏來源埠號。
  • D:顯示或隱藏目的埠號。
  • p:顯示或隱藏所有埠號。

Sorting:

  • 1/2/3:選擇排序欄位。
  • <:以流量來源 hostname 排序。
  • >:以流量目的 hostname 排序。
  • o:凍結目前排列狀況。

General:

  • P:暫停更新資料,讓使用者慢慢看目前的圖表。
  • j/k:上下捲動圖表,用於凍結排列的狀況。
  • h:顯示快速鍵使用說明。
  • b:顯示或隱藏流量圖。
  • B:切換流量圖的顯示資料。
  • T:顯示或隱藏累計流量。
  • f:編輯 filter code。
  • l:設定 screen filter。
  • L:切換 linear 或 log 轉換。
  • !:執行 shell command。
  • q:離開 iftop

參考資料:Tecmint