🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,全网11W+粉丝博主,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,同时还运营着一个技术交流群,如有需要请站内私信或者联系VX(gylzbk),互相学习共同进步。

一、简介
Nethogs 是一款专为进程级网络流量监控设计 的开源工具,其核心优势在于按进程而非协议或子网 统计带宽使用情况。与传统工具(如 iftop
或 netstat
)不同,Nethogs 可直接定位消耗带宽的具体进程,无需依赖特殊内核模块。它通过实时监测网络接口,帮助用户快速发现异常流量源,例如某进程突发性占用大量带宽的情况。
二、安装方法
Nethogs 支持主流 Linux 发行版,通过包管理器即可快速安装:
-
Debian/Ubuntu
bashsudo apt-get install nethogs
-
Fedora
bashsudo dnf install nethogs
-
Arch Linux
bashsudo pacman -S nethogs
-
CentOS/RHEL
bashsudo yum install nethogs # 或使用 EPEL 源
注意:部分系统需手动添加仓库,具体参考项目文档。
三、基础用法与界面解析
-
启动监控
默认启动命令为:
bashsudo nethogs
需管理员权限,否则可能无法显示所有进程。

markdown
输出界面包含以下核心字段:
* **PID**:进程ID
* **USER**:运行用户
* **PROGRAM**:进程名或路径
* **SENT**:累计发送流量
* **RECEIVED**:累计接收流量
* **TOTAL**:总流量(发送+接收)
- 指定网络接口
监控特定接口(如 eth0
): bash sudo nethogs eth0
使用 -a
参数可包含环回接口(lo
): bash sudo nethogs -a
- 交互式操作
q
:退出s
/r
:按发送/接收流量排序m
:切换流量单位(B/KB/MB)
四、高级功能与参数详解
Nethogs 提供多项参数实现精细化控制:
参数 | 功能 | 示例 |
---|---|---|
-d <秒> |
设置刷新间隔,默认 1 秒 |
sudo nethogs -d 5 (每5秒刷新) |
-c <次数> |
运行指定次数后退出 | sudo nethogs -c 3 (执行3次后退出) |
-v <模式> |
设置流量单位模式: 0 =KB/s(默认) 1 =总KB 2 =总B 3 =总MB |
sudo nethogs -v 3 (以MB显示总流量) |
-t |
追踪模式,输出单列数据便于日志记录 | sudo nethogs -t >> /var/log/network.log |
-p |
监听混杂模式(需谨慎,仅限测试) | sudo nethogs -p eth0 |
-s |
启用静默模式,仅显示统计信息(与 -t 组合使用) |
sudo nethogs -t -s |
组合示例 :每10秒监控 enp1s0
接口3次并记录到日志:
bash
sudo nethogs -t -d 10 -c 3 enp1s0 >> nethogs.log
五、实战应用
-
快速排查网络拥堵
当网速异常时,运行
sudo nethogs
立即定位占用带宽的PID。例如,发现PID=1234
持续上传高流量,可通过ps -ef | grep 1234
确认进程详情并终止异常任务[2][4]。 -
带宽优化配置
长期监控可识别非必要进程。例如,观察到某后台程序(如同步工具)在深夜持续下载,可调整其调度时间以避免影响白天业务[4]。
-
安全监控
突然出现的高流量进程可能暗示恶意活动。结合日志分析工具(如
awk
)定位异常:bash# 提取高流量进程 awk '{print $1,$2,$7}' nethogs.log | sort -nrk 3 | head
六、与同类工具对比
工具 | 特性 | 适用场景 |
---|---|---|
Nethogs | 进程级监控 无需内核模块 实时交互 | 定位进程级带宽使用 |
iftop | 流量按协议/子网统计 | 实时流量分布分析 |
netstat | 网络连接状态查看 | 端口、连接数统计 |
nload | 网卡级实时带宽统计 | 单一网卡性能监控 |
选择Nethogs的核心原因是其精确到进程的带宽分组能力,弥补了其他工具的空白。
七、常见问题解答(FAQ)
-
Q1:为什么需要
sudo
权限?Nethogs需访问底层网络接口信息,普通用户权限受限。
-
Q2:如何显示完整进程路径?
默认显示的是进程名,需通过
-p
参数(部分版本可能不支持)或直接查看PROGRAM
列的路径信息。 -
Q3:监控不到网卡流量怎么办?
确保网卡名称正确(使用
ip a
查看),或尝试-a
参数包含所有接口。此外,容器或虚拟机可能需要权限调整。 -
Q4:如何自动化监控?
结合脚本周期运行:
bash# 每小时记录一次流量数据 while true; do sudo nethogs -t -d 3600 >> /var/log/nethogs_hourly.log; done
八、总结
Nethogs 凭借进程级带宽监控 和无内核依赖的优势,成为排查网络问题的利器。无论是快速定位异常进程,还是长期优化资源分配,其丰富的参数和扩展性均能满足需求。对于管理员而言,掌握 Nethogs 的高级选项(如自动化日志与可视化集成)将进一步提升运维效率。