nethogs是一款基于命令行的网络流量监控工具,能够按进程/用户分组统计带宽使用情况,帮助用户快速定位异常流量源。与其他网络监控工具不同,nethogs直接关联流量到具体进程,无需依赖特殊内核模块,非常适合快速排查网络阻塞问题。它提供直观的实时监控界面,显示每个进程的发送和接收流量,支持多种单位切换和排序方式。通过灵活的参数组合,用户可以精准监控特定网络接口、设置刷新频率、分析流量模式,并在交互模式下动态调整显示内容。
nethogs的核心功能是按进程统计网络流量,其工作原理是通过监听网络接口,将数据包按进程PID分组统计,最终以类似top命令的界面显示。与iftop等工具相比,nethogs的优势在于直接显示进程信息,而非仅显示协议或IP流量,这使得用户能更直接地定位到带宽占用过高的应用程序。nethogs支持IPv4和IPv6协议,可监控所有活动的网络接口,包括物理网卡和无线网卡,如eth0、wlan0等。它提供了多种显示模式,包括实时流量速率(KB/s)和累计流量总值(KB/B/MB),满足不同场景的监控需求。
nethogs在主流Linux发行版中均有现成包,安装方法如下:
发行版 | 安装命令 |
---|---|
Ubuntu/Debian | sudo apt-get update && sudo apt-get install nethogs |
CentOS/RHEL | sudo yum install nethogs (或使用dnf命令) |
Arch Linux | sudo pacman -S nethogs |
安装完成后,需以root权限或通过sudo执行nethogs命令,因为需要访问系统级网络统计信息。
nethogs提供了丰富的命令行参数,用户可通过这些参数灵活控制监控行为:
参数顺序不影响功能,可放在网卡名称前或后。例如sudo nethogs -d 5 eth0
和sudo nethogs eth0 -d 5
效果相同。这些参数允许用户根据实际需求定制监控界面,如需要长时间监控但限制次数时,可使用-c
参数;需要持续关注新出现的流量进程时,可使用-t
参数。
nethogs在运行时提供了交互式快捷键功能,用户可在监控过程中动态调整显示内容:
这些快捷键在监控过程中非常实用,例如当发现某个进程占用大量接收流量时,可按r键按接收流量排序,使异常进程立即显现;当需要查看总流量而非瞬时速率时,可按m键切换显示模式。快捷键操作不会中断监控,用户可在不退出nethogs的情况下实时调整显示内容。
在服务器网络异常时,可通过nethogs监控特定网卡的流量,快速定位异常进程。例如,监控eth0网卡的实时流量:
sudo nethogs eth0
运行后,界面会显示所有使用eth0网卡的进程及其发送和接收流量。若要同时监控多个网卡(如eth0和wlan0),命令如下:
sudo nethogs eth0 wlan0
此命令可帮助用户确定是哪个网卡的流量导致网络问题,以及哪些进程在该网卡上活跃。在实际应用中,当发现某个进程占用异常高的带宽时,可结合ps命令查看该进程的详细信息,或使用kill命令终止进程。
默认情况下,nethogs每1秒刷新一次界面,对于需要更稳定观察流量变化的场景(如下载/上传大文件时),可调整刷新频率以减少数据波动。例如,设置每5秒刷新一次:
sudo nethogs -d 5 eth0
此命令会降低刷新频率,使流量数值更稳定,便于用户观察长期趋势。若要监控一段时间后自动退出,可结合-c参数限制刷新次数,如监控5秒后退出:
sudo nethogs -d 5 -c 1 eth0
nethogs支持多种流量显示模式,用户可根据需求选择合适的单位。例如,以MB/s为单位显示流量:
sudo nethogs -v 4 eth0
运行后,界面会显示进程的发送和接收流量以MB/s为单位。在交互模式下,用户可按m键切换显示模式,从KB/s切换到总KB,再到总MB,灵活适应不同监控需求。
此外,当需要持续监控新出现的流量进程时,可使用-t参数启用追踪模式:
sudo nethogs -t eth0
此模式下,nethogs会记录每个进程的流量历史,便于分析流量变化趋势。例如,可观察某个进程在特定时间点的流量峰值,或分析其流量模式是否异常。
当服务器出现网络延迟或带宽不足时,nethogs可迅速帮助用户定位问题进程。以下是具体操作步骤:
查看所有网卡的实时流量:
sudo nethogs
此命令会显示所有活动网卡的流量统计。
发现eth0网卡流量异常:
sudo nethogs eth0
运行后,界面显示如下(示例):
PID USER PROGRAM DEV SENT RECEIVED
1234 root /usr/bin/ssh eth0 12.3 5.6 KB/sec
5678 mysql /usr/sbin/mysqld eth0 0.0 98.7 KB/sec
9012 user /usr/bin/chrome eth0 45.2 102.4 KB/sec
按接收流量排序,快速定位高接收流量的进程:
# 运行nethogs后按r键
排序后界面显示:
PID USER PROGRAM DEV SENT RECEIVED
5678 mysql /usr/sbin/mysqld eth0 0.0 98.7 KB/sec
9012 user /usr/bin/chrome eth0 45.2 102.4 KB/sec
1234 root /usr/bin/ssh eth0 12.3 5.6 KB/sec
切换显示模式为总流量(MB):
# 运行nethogs后按m键
此时界面显示:
PID USER PROGRAM DEV SENT RECEIVED
5678 mysql /usr/sbin/mysqld eth0 0.0 15.7 MB
9012 user /usr/bin/chrome eth0 11.3 20.1 MB
1234 root /usr/bin/ssh eth0 3.1 1.4 MB
确认高接收流量进程:
通过这种快速定位,用户可以立即采取措施,如限制该进程的带宽,或检查其是否正常运行。在实际运维中,nethogs常与其他工具(如iftop、tcpdump)配合使用,以全面分析网络流量问题。
nethogs与其他网络监控工具相比有其独特优势:
工具 | 监控粒度 | 特点 | 适用场景 |
---|---|---|---|
nethogs | 进程级 | 直接关联流量到进程,无需特殊内核模块 | 快速定位异常流量进程 |
iftop | 连接级 | 显示IP和端口间的流量,界面直观 | 分析特定IP/端口的流量 |
说明:报告内容由通义AI生成,仅供参考。