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

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

一、简介

Nethogs 是一款专为进程级网络流量监控设计 的开源工具,其核心优势在于按进程而非协议或子网 统计带宽使用情况。与传统工具(如 iftopnetstat)不同,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 确认进程详情并终止异常任务[2][4]。

  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 的高级选项(如自动化日志与可视化集成)将进一步提升运维效率。

相关推荐
muxue1783 分钟前
centos 7 网络配置(2):ping命令出现问题
linux·网络·centos
唐僧洗头爱飘柔952722 分钟前
(云计算HCIP)HCIP全笔记(九)本篇介绍操作系统基础,内容包含:操作系统组成、分类和定义,Linux的特性结构和Linux版本分类
linux·笔记·华为云·云计算·hcip·openeuler·操作系统概述
电鱼智能的电小鱼44 分钟前
EFISH-SBC-RK3588 —— 厘米级定位 × 旗舰算力 × 工业级可靠‌
linux·人工智能·嵌入式硬件·边缘计算
高峰君主1 小时前
全栈自动化:从零构建智能CI/CD流水线
运维·ci/cd·自动化
yuanlaile1 小时前
Go全栈_Golang、Gin实战、Gorm实战、Go_Socket、Redis、Elasticsearch、微服务、K8s、RabbitMQ全家桶
linux·redis·golang·k8s·rabbitmq·gin
程序员JerrySUN1 小时前
驱动开发硬核特训 · Day 22(上篇): 电源管理体系完整梳理:I2C、Regulator、PMIC与Power-Domain框架
linux·驱动开发·嵌入式硬件
IT运维爱好者1 小时前
Ubuntu 22.04.4操作系统初始化详细配置
linux·运维·服务器·ubuntu
樂5021 小时前
关于 Web 服务器的五个案例
linux·服务器·经验分享
用户217516114382 小时前
【linux】重定向与缓冲区
linux
一键三联啊2 小时前
【FastJSON】的parse与parseObject
linux·前端·python