nethogs 网络监控 命令详解

Linux下nethogs命令详解与实际案例

nethogs是一款基于命令行的网络流量监控工具,能够按进程/用户分组统计带宽使用情况,帮助用户快速定位异常流量源。与其他网络监控工具不同,nethogs直接关联流量到具体进程,无需依赖特殊内核模块,非常适合快速排查网络阻塞问题。它提供直观的实时监控界面,显示每个进程的发送和接收流量,支持多种单位切换和排序方式。通过灵活的参数组合,用户可以精准监控特定网络接口、设置刷新频率、分析流量模式,并在交互模式下动态调整显示内容。

一、nethogs基本功能与安装

nethogs的核心功能是按进程统计网络流量,其工作原理是通过监听网络接口,将数据包按进程PID分组统计,最终以类似top命令的界面显示。与iftop等工具相比,nethogs的优势在于直接显示进程信息,而非仅显示协议或IP流量,这使得用户能更直接地定位到带宽占用过高的应用程序。nethogs支持IPv4和IPv6协议,可监控所有活动的网络接口,包括物理网卡和无线网卡,如eth0、wlan0等。它提供了多种显示模式,包括实时流量速率(KB/s)和累计流量总值(KB/B/MB),满足不同场景的监控需求。

nethogs在主流Linux发行版中均有现成包,安装方法如下:

发行版安装命令
Ubuntu/Debiansudo apt-get update && sudo apt-get install nethogs
CentOS/RHELsudo yum install nethogs(或使用dnf命令)
Arch Linuxsudo pacman -S nethogs

安装完成后,需以root权限或通过sudo执行nethogs命令,因为需要访问系统级网络统计信息。

二、常用命令行参数详解

nethogs提供了丰富的命令行参数,用户可通过这些参数灵活控制监控行为:

  • -V:显示版本信息
  • -h:输出帮助文档
  • -b:进入bughunt模式(隐式启用tracemode)
  • -d <秒>:设置界面刷新频率,默认为1秒
  • -v <模式>:切换流量显示单位,支持多种模式:
    • 0=KB/s(默认)
    • 1=总KB
    • 2=总B
    • 3=总MB
  • -t:启用tracemode,持续监控新进程的流量
  • -p:混杂模式下监听流量(不推荐使用)
  • -c <次数>:设置刷新次数,完成指定次数后自动退出
  • -s:按发送流量排序输出
  • -a:监控所有网卡端口,包括环回接口和未启用的接口
  • device:指定监控的网卡设备,支持多个设备,用空格分隔,默认监控所有活动接口

参数顺序不影响功能,可放在网卡名称前或后。例如sudo nethogs -d 5 eth0sudo nethogs eth0 -d 5效果相同。这些参数允许用户根据实际需求定制监控界面,如需要长时间监控但限制次数时,可使用-c参数;需要持续关注新出现的流量进程时,可使用-t参数。

三、交互模式下的快捷键功能

nethogs在运行时提供了交互式快捷键功能,用户可在监控过程中动态调整显示内容:

  • q:退出程序
  • s:按发送流量(SENT)排序
  • r:按接收流量(RECEIVED)排序
  • m:切换显示模式:
    • 在KB/s、MB/s等速率模式和KB、MB等总流量模式之间切换
    • 支持单位包括B、KB、MB、GB等
  • l:显示进程的完整命令行路径

这些快捷键在监控过程中非常实用,例如当发现某个进程占用大量接收流量时,可按r键按接收流量排序,使异常进程立即显现;当需要查看总流量而非瞬时速率时,可按m键切换显示模式。快捷键操作不会中断监控,用户可在不退出nethogs的情况下实时调整显示内容。

四、实际使用案例

案例1:监控特定网卡流量

在服务器网络异常时,可通过nethogs监控特定网卡的流量,快速定位异常进程。例如,监控eth0网卡的实时流量:

sudo nethogs eth0

运行后,界面会显示所有使用eth0网卡的进程及其发送和接收流量。若要同时监控多个网卡(如eth0和wlan0),命令如下:

sudo nethogs eth0 wlan0

此命令可帮助用户确定是哪个网卡的流量导致网络问题,以及哪些进程在该网卡上活跃。在实际应用中,当发现某个进程占用异常高的带宽时,可结合ps命令查看该进程的详细信息,或使用kill命令终止进程

案例2:设置刷新频率

默认情况下,nethogs每1秒刷新一次界面,对于需要更稳定观察流量变化的场景(如下载/上传大文件时),可调整刷新频率以减少数据波动。例如,设置每5秒刷新一次:

sudo nethogs -d 5 eth0

此命令会降低刷新频率,使流量数值更稳定,便于用户观察长期趋势。若要监控一段时间后自动退出,可结合-c参数限制刷新次数,如监控5秒后退出:

sudo nethogs -d 5 -c 1 eth0
案例3:分析流量模式

nethogs支持多种流量显示模式,用户可根据需求选择合适的单位。例如,以MB/s为单位显示流量:

sudo nethogs -v 4 eth0

运行后,界面会显示进程的发送和接收流量以MB/s为单位。在交互模式下,用户可按m键切换显示模式,从KB/s切换到总KB,再到总MB,灵活适应不同监控需求。

此外,当需要持续监控新出现的流量进程时,可使用-t参数启用追踪模式

sudo nethogs -t eth0

此模式下,nethogs会记录每个进程的流量历史,便于分析流量变化趋势。例如,可观察某个进程在特定时间点的流量峰值,或分析其流量模式是否异常。

案例4:实际场景应用——排查高带宽进程

当服务器出现网络延迟或带宽不足时,nethogs可迅速帮助用户定位问题进程。以下是具体操作步骤:

  1. 查看所有网卡的实时流量:

    sudo nethogs
    

    此命令会显示所有活动网卡的流量统计。

  2. 发现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
    
  3. 按接收流量排序,快速定位高接收流量的进程:

    # 运行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
    
  4. 切换显示模式为总流量(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
    
  5. 确认高接收流量进程:

    • 在示例中,mysqld进程接收流量最高(98.7 KB/sec),可能是数据库同步或备份导致
    • 检查该进程的命令行路径:/usr/sbin/mysqld
    • 结合系统日志或数据库日志进一步分析

通过这种快速定位,用户可以立即采取措施,如限制该进程的带宽,或检查其是否正常运行。在实际运维中,nethogs常与其他工具(如iftop、tcpdump)配合使用,以全面分析网络流量问题。

五、nethogs与其他网络监控工具的对比

nethogs与其他网络监控工具相比有其独特优势:

工具监控粒度特点适用场景
nethogs进程级直接关联流量到进程,无需特殊内核模块快速定位异常流量进程
iftop连接级显示IP和端口间的流量,界面直观分析特定IP/端口的流量

说明:报告内容由通义AI生成,仅供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值