nethogs 是什么
系统带宽被吃满时,常规的网络统计只能告诉你哪个网卡忙,nethogs 能直接回答「哪个进程在吃带宽」:它按进程分组实时显示上行与下行速率,比看整体流量更贴近排错需求。查到嫌疑进程后,再用连接查看工具定位它具体连了谁,就能形成完整的证据链。它是基于抓包估算的实现,在转发与短连接场景下数值会明显偏差。
基本信息
| 适用平台 | GNU/Linux(需安装 nethogs,通常需要 root) |
|---|---|
| 语法 | nethogs [选项] [接口] |
| 常用选项 | -d 刷新秒数、-t 文本模式(适合记录)、-v 视图模式 |
| 交付形式 | 交互界面与文本输出两种 |
| 依赖 | 抓包权限(root 或相应能力) |
| 衔接手段 | 结合连接查看工具确认对端地址 |
典型使用场景
- 找出占用带宽最多的进程,判断是业务流量还是异常外发。
- 排查服务器上行异常:确认是否有未授权的数据外发。
- 压测或批量任务期间观察各进程实际占用。
- 记录一段时间内进程级带宽快照,用于事后分析。
- 与连接列表对照,定位可疑连接的对端地址。
常用写法
常用写法
nethogs eth0 # 按进程看实时上下行
nethogs -d 1 -t eth0 | tee /tmp/nethogs.log # 每秒一行文本快照,便于留档
nethogs -d 5 # 指定刷新间隔
ss -tp state established | head # 查到进程后看它连了谁
wc -l /tmp/nethogs.log # 确认快照已写入项目与现象读法
| 项目 | 含义 | 使用要点 |
|---|---|---|
| 进程级速率 | 单个进程的上下行速率 | 排错的核心信息 |
| 文本模式 | 适合重定向与记录 | 交互界面无法直接用管道保存 |
| 刷新间隔 | 默认约 1 秒 | 间隔太长会漏掉短时突发 |
| 抓包权限 | 需要 root 或相应能力 | 权限不足时无法启动 |
| 数值偏差 | 基于抓包估算 | 转发与短连接场景偏差较大 |
| 与连接对照 | 结合连接列表看对端 | 只靠速率无法定位对端地址 |
统计随进程重启归零,跨时段的总量它给不了:需要总量类指标时,间隔采样网卡统计做差更合适。
转发或地址转换场景下数值偏差明显,因为流量被多进程或多次计数;结论要结合连接列表一起看。
交互界面有快捷键可切换单位与视图,文本模式更适合脚本化记录与事后分析。