如何监控 Linux 上进程的网络使用情况

网络访问已成为我们日常生活中不可或缺的一部分。你是否好奇在你的 Linux 计算机上,哪些进程最频繁地使用了你的网络连接?幸运的是,Linux 提供了一些实用的工具,可以让你轻松监控哪些进程正在消耗你的带宽。下面是一些值得了解的工具:

每日精选视频

继续阅读以了解更多内容

1. Nethogs (网络猪)

Nethogs 的作用类似于 htop 或 top 对于 CPU 和内存使用情况的监控,但它专注于网络连接。它可以实时显示哪些进程正在使用网络资源。

就像 top、htop 或 atop 一样,Nethogs 是一个全屏程序,它会定期更新,以显示当前每个进程的网络活动情况。

安装 Nethogs 非常简单,你只需要使用你的包管理器即可。

例如,在 Debian 和 Ubuntu 系统上,你可以使用以下命令:

 sudo apt install nethogs 

在 Arch Linux 系统上,你需要输入:

 sudo pacman -S nethogs 

对于 Red Hat 系列的发行版:

 sudo dnf install nethogs 

要运行 Nethogs,你需要使用 root 权限:

 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 中,一切皆为文件。

要查看当前的网络连接,请使用以下命令:

 lsof -i 

lsof 会显示任何打开网络连接的命令名称、进程 ID(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 本身是一个强大的程序,可以让你查看系统上的网络连接。它本身并不显示哪些网络连接附加到了哪个进程,但你可以通过命令行选项来查看。

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 和命令名称。

 netstat -p 

当你运行它时,netstat 会列出所有的网络连接,然后退出。使用 -c 选项,你可以看到不断更新的连接列表:

 netstat -pc 

这类似于使用 Nethogs 这样的面向屏幕的程序,但这样做的好处是你能够将输出通过管道传递给另一个程序(例如 grep 或寻呼机)来进一步检查:

 netstat -p | grep 'systemd' 

要查看系统中所有具有网络连接的进程,你可能需要以 root 权限运行 netstat:

 sudo netstat  

现在你可以看到哪些 Linux 应用程序正在占用你的带宽

与许多现代操作系统一样,Linux 与互联网紧密相连。有时候,很难追踪哪些进程正在使用你的带宽。 通过使用 nethogs、lsof 和 netstat 等工具,你可以监控具有开放网络连接的进程。

即使建立了连接,有时进程也可能会失控。在 Linux 上,你可以轻松终止任何行为异常的进程。