如何監控 Linux 上進程的網絡使用情況
在計算機上,互聯網訪問是必不可少的,但您可能會想知道哪些Linux進程在您的計算機上使用了最多的連接。幸運的是,通過一些常見的Linux工具,監視使用帶寬的進程變得很容易。以下是其中一些工具:
1、nethogs
nethogs 是一個為互聯網連接提供類似于 htop 或 top 的 CPU 和內存使用情況的程序。它會顯示哪些進程正在訪問網絡的快照。
與 top、htop 或 atop 類似,nethogs 是一個全屏程序,每隔幾秒鐘更新一次,以顯示當前由進程產生的網絡連接。
安裝 nethogs 很簡單,只需通過您的包管理器進行安裝。
例如,在Debian和Ubuntu上:
linuxmi@linuxmi ~/www.linuxmi.com
% sudo apt install nethogs
在 Arch Linux 上:
sudo pacman -S nethogs
在 Red Hat 系列上:
sudo dnf install nethogs
要運行 nethogs,您需要以 root 身份運行:
linuxmi@linuxmi ~/www.linuxmi.com
% sudo nethogs
您可以通過以下命令將其設置為可以以普通用戶身份運行 nethogs:
sudo setcap "cap_net_admin,cap_net_raw+pe" /path/to/nethogs
您應該將“/path/to/nethogs”替換為 nethogs 的絕對路徑名。您可以使用 which 命令找到它:
which nethogs
2、lsof
雖然 lsof 是一個用于列出打開文件的實用程序,但它也可以列出打開的網絡連接。-i 選項列出了系統上正在運行的進程所附加的互聯網連接。畢竟,在 Linux 中,一切都是文件。
要查看當前的互聯網連接,使用以下命令:
linuxmi@linuxmi ~/www.linuxmi.com
% lsof -i
lsof會顯示具有打開的互聯網連接的任何命令的名稱、PID、文件描述符、互聯網連接類型、大小、協議以及連接的正式文件名。
使用 -i4 和 -i6 選項,您可以查看使用 IPv4 或 IPv6 的連接。
很有可能您已經安裝了 lsof。如果沒有安裝,在主要的 Linux 發行版上安裝也很容易。
在 Debian 和 Ubuntu 上,輸入:
sudo apt install lsof
而在 Arch 上:
sudo pacman -S lsof
在 Red Hat 系列的發行版上:
sudo dnf install lsof
3、netstat
netstat 是一個強大的程序,可以讓您查看系統上的網絡連接。但它不會顯示網絡連接附加到哪些進程。與 lsof 類似,您可以使用命令行選項來查看這些信息。
netstat 是 net-tools 包的一部分。您可以使用默認的軟件包管理器在大多數 Linux 發行版上安裝它。
例如,在 Debian 或 Ubuntu 上:
sudo apt install net-tools
在 Arch Linux 上:
sudo pacman -S net-tools
要在 Fedora、CentOS 和 RHEL 上安裝 netstat,請運行:
sudo dnf install net-tools
您可以在命令行上運行 netstat。默認情況下,它會顯示連接的協議、地址和狀態,但 -p 選項會添加一列顯示進程 ID 和命令名稱。
linuxmi@linuxmi ~/www.linuxmi.com
% netstat -p
當您運行 netstat 時,它將只列出所有網絡連接,然后退出。使用 -c 選項,您可以看到一個持續更新的連接列表:
linuxmi@linuxmi ~/www.linuxmi.com
% netstat -pc
這與使用像 nethogs 這樣的面向屏幕的程序類似,但以這種方式進行的優點是您可以將輸出管道傳輸到另一個程序,如 grep 或分頁程序,以便檢查它:
linuxmi@linuxmi ~/www.linuxmi.com
% netstat -p | grep 'systemd'
要查看系統上具有網絡連接的所有進程,您可能需要以 root 身份運行 netstat:
linuxmi@linuxmi ~/www.linuxmi.com
% sudo netstat
現在您可以看到哪些 Linux 應用程序在占用您的帶寬
與許多現代操作系統一樣,Linux 與互聯網緊密連接。有時候很難追蹤哪些進程在使用您的帶寬。通過使用 nethogs、lsof 和 netstat 等工具,您可以找到具有打開連接的進程。