网络访问已成为我们日常生活中不可或缺的一部分。你是否好奇在你的 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 上,你可以轻松终止任何行为异常的进程。