运维大师教你使用流量监控神器nethogs分析Linux进程网络流量

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

一、简介

Nethogs 是一款专为进程级网络流量监控设计 的开源工具,其核心优势在于按进程而非协议或子网 统计带宽使用情况。与传统工具(如 iftop 或 netstat)不同,Nethogs 可直接定位消耗带宽的具体进程,无需依赖特殊内核模块。它通过实时监测网络接口,帮助用户快速发现异常流量源,例如某进程突发性占用大量带宽的情况。


二、安装方法

Nethogs 支持主流 Linux 发行版,通过包管理器即可快速安装:

  • Debian/Ubuntu

    bash 复制代码
    sudo apt-get install nethogs  
  • Fedora

    bash 复制代码
    sudo dnf install nethogs  
  • Arch Linux

    bash 复制代码
    sudo pacman -S nethogs  
  • CentOS/RHEL

    bash 复制代码
    sudo yum install nethogs  # 或使用 EPEL 源  

注意:部分系统需手动添加仓库,具体参考项目文档。


三、基础用法与界面解析

  1. 启动监控

    默认启动命令为:

    bash 复制代码
    sudo nethogs  

    需管理员权限,否则可能无法显示所有进程。

markdown 复制代码
输出界面包含以下核心字段:

*   **PID**:进程ID
*   **USER**:运行用户
*   **PROGRAM**:进程名或路径
*   **SENT**:累计发送流量
*   **RECEIVED**:累计接收流量
*   **TOTAL**:总流量(发送+接收)
  1. 指定网络接口

监控特定接口(如 eth0): bash sudo nethogs eth0 使用 -a 参数可包含环回接口(lo): bash sudo nethogs -a

  1. 交互式操作
    • 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  

五、实战应用

  1. 快速排查网络拥堵

    当网速异常时,运行 sudo nethogs 立即定位占用带宽的PID。例如,发现 PID=1234 持续上传高流量,可通过 ps -ef | grep 1234 确认进程详情并终止异常任务24。

  2. 带宽优化配置

    长期监控可识别非必要进程。例如,观察到某后台程序(如同步工具)在深夜持续下载,可调整其调度时间以避免影响白天业务4。

  3. 安全监控

    突然出现的高流量进程可能暗示恶意活动。结合日志分析工具(如 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 的高级选项(如自动化日志与可视化集成)将进一步提升运维效率。

相关推荐
雯宝5 小时前
mnt_init 函数
linux
律宏阔11 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔11 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴11 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千11 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei3711 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei3711 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei3711 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
judezh11 小时前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker
GeW12 小时前
制造业高端化,为什么必须重估Linux和数据库?
linux