Contents

如何監控 Linux 上進程的網絡使用情況

接入互聯網勢在必行;然而,人們可能會詢問哪些 Linux 應用程序消耗了其設備上最多的網絡容量。值得慶幸的是,一些傳統的 Linux 工具有助於識別耗盡帶寬的進程。以下是此類程序的列表:

網絡豬

/bc/images/nethogs-transmission.jpg

nethogs 是一個程序,它對互聯網連接的作用類似於 htop 或 top 對 CPU 和內存使用的作用。它向您顯示哪些進程正在訪問網絡的快照。

與 top、htop 或 atop 等工具類似,nethogs 以全屏能力運行並定期刷新,以提供歸因於各個進程的網絡連接的最新概述。

通過使用包管理器可以輕鬆獲得 nethogs,這大大簡化了過程。

例如,在 Debian 和 Ubuntu 上:

 sudo apt install nethogs 

在 Arch Linux 上:

 sudo pacman -S nethogs 

關於紅帽家族:

 sudo dnf install nethogs 

為了成功執行 nethogs,用戶必須通過被授予 root 訪問權限來擁有管理權限。

 sudo nethogs 

可以通過執行以下命令將 nethogs 配置為由普通用戶執行:

 sudo setcap "cap_net_admin,cap_net_raw\+pe" /path/to/nethogs 

為了使用nethogs,需要提供其可執行文件的完整路徑,將命令行中的“/path/to/nethogs”替換為通過“which”命令等方法獲取的實際路徑。這確保了程序的正確定位和執行。

 which nethogs 

lsof

/bc/images/lsof-network.jpg

雖然 lsof 是一個對打開的文件進行編目的實用程序,但它同樣擅長識別打開的網絡連接。通過使用“-i”選項,人們可以獲得操作系統中當前由活動進程維護的互聯網連接的全面清單。鑑於在基於 Linux 的系統中,甚至非文件對像也被如此對待,這一特性變得特別值得注意。

要查看計算機上當前活動互聯網連接的列表,您可以在終端或命令提示符窗口中使用以下命令:

 lsof -i 

利用“lsof”命令可以提供有關維護活動互聯網連接的進程的信息,包括其進程 ID (PID)、文件描述符、互聯網連接類型、大小、協議和關聯的正式文件名。

“-i4”和“-i6”選項的可用性使用戶能夠利用 Internet 協議版本 4 (IPv4) 或 Internet 協議版本 6 (IPv6) 監視網絡連接。

您很可能已經安裝了 Lsof,因為它已預安裝在許多 Linux 發行版中,或者可以輕鬆安裝在那些沒有它的發行版上。

在 Debian 和 Ubuntu 上,輸入:

 sudo apt install lsof 

在拱門上:

 sudo pacman -S lsof 

關於 Red Hat 系列發行版:

 sudo dnf install lsof 

網絡統計

/bc/images/netstat-processes.jpg

Netstat 是一個非常強大的實用程序,使用戶能夠識別系統內的活動網絡連接。但是,它不提供有關這些連接所關聯的特定進程的信息。與 lsof 類似,人們可以通過利用命令行選項來獲取此類詳細信息。

Netstat 是 net-tools 套件中包含的一個組件,通過利用每個發行版附帶的標準包管理系統,可以輕鬆地將其安裝在一系列 Linux 發行版上。

例如,在 Debian 或 Ubuntu 上:

 sudo apt install net-tools

在 Arch Linux 上:

 sudo pacman -S net-tools 

要在 Linux 發行版(例如 Fedora、CentOS 或 RHEL)上獲取 netstat 實用程序,請在終端中執行以下命令:

 sudo dnf install net-tools 

在默認配置中,在命令提示符處執行“netstat”命令會提供網絡協議、IP 地址和連接狀態等詳細信息。但是,通過使用“-p”選項,會顯示一個附加列,其中包括與每個活動連接關聯的進程標識符和相應的可執行文件名。

 netstat -p 

運行不帶任何附加選項的命令“netstat”將生成一份全面的報告,詳細說明終止執行之前該時刻的所有活動網絡連接。通過利用“-c”標誌,人們可以訪問網絡關聯的持續帳戶,該帳戶定期用新數據刷新。

 netstat -pc 

這種方法類似於利用專為屏幕設計的軟件應用程序(例如 net hogs),但好處在於將結果引導到另一個程序(例如 grep 或分頁器)中以進行更仔細的檢查:

 netstat -p | grep 'systemd' 

要全面了解系統上存在的網絡連接,需要使用管理權限執行命令“netstat”,即以 root 用戶身份運行該命令。

 sudo netstat

現在您可以看到哪些 Linux 應用程序正在佔用您的帶寬

Linux 與許多當代操作系統類似,表現出與互聯網的深刻相互依賴性。有時,辨別哪些進程正在消耗帶寬可能會很困難。幸運的是,nethogs、lsof 和 netstat 等實用程序在識別維護活動網絡連接的進程方面提供了寶貴的幫助。

在某些情況下,儘管已建立鏈接,但仍可能發生異常行為。在 Linux 操作系統領域,結束任何可能出現的異常進程是一項簡單的任務。