当前位置: 首页 > news >正文

Linux命令-nethogs(终端下的网络流量监控工具)

nethogs是 Linux 中一个按进程实时监控网络带宽使用情况的工具。它能够显示每个进程的网络流量,帮助快速定位哪个进程占用了大量网络带宽。

📖 基本语法

nethogs[选项][网络接口]

重要特性

  • 实时显示每个进程的网络流量
  • 按发送和接收流量分别统计
  • 支持按流量排序
  • 支持监控特定网络接口
  • 刷新频率可配置

🎯 常用选项

选项说明
-d <秒>设置刷新间隔时间(默认 1 秒)。
-t跟踪模式(累积流量统计)。
-p混杂模式(监听所有流量,需要 root 权限)。
-s按发送流量排序。
-r按接收流量排序。
-m <KB>设置流量单位阈值(KB/s)。
-c <次数>更新指定次数后退出。
-V显示版本信息。
-h显示帮助信息。
-v显示更多详细信息。

💡 核心用法示例

1. 基本监控
# 监控所有网络接口(需要 root 权限)sudonethogs# 监控特定网络接口sudonethogs eth0sudonethogs wlan0sudonethogs enp3s0# 设置刷新间隔为 3 秒sudonethogs-d3# 监控特定接口并设置刷新间隔sudonethogs-d5eth0
2. 排序和显示模式
# 按发送流量排序sudonethogs-s# 按接收流量排序sudonethogs-r# 跟踪模式(显示累积流量)sudonethogs-t# 设置流量阈值(只显示流量大于 10KB/s 的进程)sudonethogs-m10# 混杂模式(监听所有网络流量)sudonethogs-p
3. 高级用法
# 监控特定接口,按发送排序,3秒刷新sudonethogs-d3-seth0# 监控并更新5次后退出sudonethogs-c5# 监控多个接口sudonethogs eth0 wlan0# 显示详细信息sudonethogs-v

🖥️ 交互式命令

在 nethogs 运行界面中,可以使用以下快捷键:

快捷键功能
m在 KB/s、KB、B、MB 之间切换显示单位。
r按接收流量排序。
s按发送流量排序。
q退出程序。
S切换是否显示发送流量。
R切换是否显示接收流量。
l显示/隐藏日志信息。

📊 输出解读

运行sudo nethogs后,会显示类似下面的界面:

NetHogs version 0.8.6 PID USER PROGRAM DEV SENT RECEIVED 1234 alice /usr/bin/firefox eth0 12.123 45.678 5678 bob sshd: bob@pts/0 eth0 5.432 1.234 9012 root /usr/bin/apt-get eth0 0.123 1024.567

各列含义

  • PID:进程 ID
  • USER:进程所属用户
  • PROGRAM:进程名称或命令行
  • DEV:使用的网络接口
  • SENT:发送流量速率(默认 KB/s)
  • RECEIVED:接收流量速率(默认 KB/s)

🔧 实用场景示例

1. 查找带宽占用进程
# 实时监控,找出哪个进程占用带宽最高sudonethogs# 按接收流量排序,找出下载流量大的进程sudonethogs-r# 按发送流量排序,找出上传流量大的进程sudonethogs-s
2. 监控特定服务
# 监控 Web 服务器的网络流量sudonethogs-d2eth0|grep-E"(apache2|nginx|httpd)"# 监控数据库服务的网络流量sudonethogs-d2eth0|grep-E"(mysql|postgres|mongodb)"# 监控 SSH 连接的网络流量sudonethogs-d2eth0|grepsshd
3. 定时监控和记录
# 监控10次后退出,并保存到文件sudonethogs-c10-d2>nethogs_log.txt# 监控特定接口,每5秒刷新,持续1分钟timeout60ssudonethogs-d5eth0# 监控并将结果同时输出到屏幕和文件sudonethogs-d3|teenethogs_output.txt
4. 自动化监控脚本
#!/bin/bash# 网络流量监控脚本INTERFACE="eth0"THRESHOLD=100# KB/sLOG_FILE="/var/log/nethogs_monitor.log"ALERT_EMAIL="admin@example.com"echo"开始网络流量监控 - 接口:$INTERFACE">>"$LOG_FILE"echo"阈值:${THRESHOLD}KB/s">>"$LOG_FILE"echo"时间:$(date)">>"$LOG_FILE"echo"======================================">>"$LOG_FILE"# 监控函数monitor_traffic(){sudonethogs-c1-d2"$INTERFACE"-t|tail-n+3|whileread-rline;dopid=$(echo"$line"|awk'{print $1}')user=$(echo"$line"|awk'{print $2}')program=$(echo"$line"|awk'{print $3 $4 $5 $6}')sent=$(echo"$line"|awk'{print $(NF-1)}'|sed's/KB\/s//')received=$(echo"$line"|awk'{print $NF}'|sed's/KB\/s//')# 检查是否超过阈值if(($(echo "$sent>$THRESHOLD"|bc-l)))||(($(echo "$received>$THRESHOLD"|bc-l)));thenecho"[警报]$(date'+%Y-%m-%d %H:%M:%S')">>"$LOG_FILE"echo"进程:$program(PID:$pid, 用户:$user)">>"$LOG_FILE"echo"发送:${sent}KB/s, 接收:${received}KB/s">>"$LOG_FILE"echo"--------------------------------------">>"$LOG_FILE"# 发送邮件警报echo"进程$program(PID:$pid) 网络流量异常"|\mail-s"网络流量警报 -$(date'+%Y-%m-%d %H:%M:%S')""$ALERT_EMAIL"fidone}# 持续监控whiletrue;domonitor_trafficsleep10done

🛠️ 故障排查示例

1. 服务器带宽异常排查
# 发现服务器带宽跑满,快速定位问题进程sudonethogs# 如果 nethogs 显示不明显,可以增加刷新频率sudonethogs-d0.5# 按流量排序查看sudonethogs-s# 查看上传最多的进程sudonethogs-r# 查看下载最多的进程# 监控特定时间段timeout30ssudonethogs-d1>bandwidth_log.txt
2. 找出异常网络连接
# 结合 netstat 和 nethogs 分析# 首先用 nethogs 找出高流量进程sudonethogs-s|head-10# 假设发现 PID 1234 流量异常,查看该进程的网络连接sudonetstat-tunap|grep1234# 查看进程详细信息psaux|grep1234# 查看进程打开的文件(包括网络连接)sudolsof-p1234
3. 监控 Docker 容器流量
# Docker 容器的网络流量会显示在宿主机的网络接口上# 首先找出容器对应的进程dockerps--format"table {{.Names}}\t{{.ID}}"# 监控所有网络流量,查找容器相关进程sudonethogs|grep-E"(docker|containerd)"# 或者通过进程树查找sudonethogs|whileread-rline;dopid=$(echo"$line"|awk'{print $1}')container_id=$(ps-oppid=-p"$pid"|xargsdockerps--filter"pid="2>/dev/null|tail-1)if[[-n"$container_id"]];thenecho"$line(容器:$container_id)"elseecho"$line"fidone

⚙️ 安装和配置

1. 安装 nethogs
# Debian/Ubuntusudoaptupdatesudoaptinstallnethogs# CentOS/RHELsudoyuminstallepel-releasesudoyuminstallnethogs# Fedorasudodnfinstallnethogs# Arch Linuxsudopacman-Snethogs# 从源码编译安装gitclone https://github.com/raboof/nethogs.gitcdnethogsmakesudomakeinstall
2. 配置 sudo 权限(可选)

为了避免每次都需要输入 sudo 密码,可以配置 sudoers:

# 编辑 sudoers 文件sudovisudo# 添加以下行(允许特定用户无需密码运行 nethogs)usernameALL=(ALL)NOPASSWD: /usr/sbin/nethogs# 或者允许所有用户(不推荐)# %users ALL=(ALL) NOPASSWD: /usr/sbin/nethogs
3. 创建别名(方便使用)
# 添加到 ~/.bashrc 或 ~/.bash_aliasesaliasnethogs='sudo nethogs'aliasnethogs-eth0='sudo nethogs eth0'aliasnethogs-wlan0='sudo nethogs wlan0'aliasnethogs-sort-send='sudo nethogs -s'aliasnethogs-sort-recv='sudo nethogs -r'# 重新加载配置source~/.bashrc

🔄 与其他网络监控工具对比

工具监控重点实时性易用性特点
nethogs进程级网络流量实时简单按进程显示,快速定位问题
iftop连接级网络流量实时中等显示每个连接的流量
nload接口级网络流量实时简单图形化显示接口流量
vnstat接口级流量统计历史简单统计历史流量数据
bmon接口级网络监控实时中等图形化显示多个接口
iptraf网络流量分析实时复杂详细的流量分析

📌 使用技巧

  1. 快速定位问题:当服务器带宽异常时,首先运行sudo nethogs快速找出占用带宽的进程。
  2. 结合其他工具:nethogs 显示进程,结合netstatlsofss查看具体连接。
  3. 监控特定用户:使用grep过滤特定用户的进程:sudo nethogs | grep username
  4. 长期监控:使用-c选项指定监控次数,配合重定向保存日志。
  5. 容器环境:在 Docker 或 Kubernetes 环境中,nethogs 可以帮助找出哪个容器占用带宽。

⚠️ 注意事项

  1. 需要 root 权限:nethogs 需要 root 权限才能监控所有进程的网络流量。
  2. 实时监控:nethogs 是实时监控工具,不适合长期数据收集。
  3. 进程名称显示:某些进程可能显示为命令行参数,需要结合ps命令查看详细信息。
  4. 内核模块:nethogs 依赖内核的网络统计信息,某些虚拟化环境可能不支持。
  5. 资源占用:nethogs 本身会占用少量 CPU 和内存资源。

🎯 快速参考卡

基本使用: sudo nethogs # 监控所有接口 sudo nethogs eth0 # 监控特定接口 sudo nethogs -d 3 # 3秒刷新间隔 sudo nethogs -c 10 # 更新10次后退出 排序模式: sudo nethogs -s # 按发送流量排序 sudo nethogs -r # 按接收流量排序 sudo nethogs -t # 跟踪模式(累积流量) 交互命令: m - 切换流量单位 r - 按接收排序 s - 按发送排序 q - 退出 S - 切换发送流量显示 R - 切换接收流量显示 实用组合: sudo nethogs -d 2 -s eth0 # 监控eth0,按发送排序,2秒刷新 sudo nethogs | grep firefox # 只显示Firefox进程 timeout 30s sudo nethogs # 监控30秒后自动退出

nethogs是排查网络带宽问题的利器,特别适合快速定位哪个进程占用了大量网络带宽。它简单直观,不需要复杂的配置,是 Linux 系统管理员和网络工程师必备的工具之一。

http://www.cnnetsun.cn/news/1732293.html

相关文章:

  • 基于机器学习与深度学习的高光谱图像分类包含3DCNN_SVM、3DCNN_RF、3DCNN_SVM三种。其他的需要可以自己改机器学习 深度学习 卷积神经网络 3DCNN 2DCNN 高光谱
  • with open方法详解
  • seo产品推广的常见手法有哪些
  • 掌握Makefile:从基础到高级的自动化构建指南,依托Java和百度地图实现长沙市热门道路与景点实时路况检索的实践探索。
  • APEX:让35B大模型性能提升38%的量化黑科技
  • SEO_避开这些SEO误区,让你的优化更有效
  • 别再手动看波形了!Quartus Prime 24.1 搭配 Testbench 自动化仿真全流程(附源码)
  • MacBook上运行OpenClaw:轻量级部署Kimi-VL-A3B-Thinking图文模型
  • OpenClaw文件管理:Qwen3-4B驱动的智能归类与重命名
  • 微元理论的数学化演算
  • 我的周报自动化了:用Cursor分析Excel,MCP生成图表,10分钟搞定并发布到Netlify
  • leetcode 1615. 最大网络秩-耗时100-Maximal Network Rank
  • 如何构建企业级向量数据库:SuperDuperDB与Qdrant终极集成指南
  • 如何用Noria实现5倍性能提升:Lobsters网站实战案例解析
  • Noria分片策略详解:如何实现水平扩展与负载均衡的终极指南
  • OpenClaw任务编排进阶:Phi-3-vision-128k-instruct多步骤图文处理流程设计
  • Noria性能基准测试终极指南:TPC-H查询优化与5倍性能提升分析
  • 终极指南:如何使用Glide在Android通知栏小部件中加载网络图片
  • QT界面设计小技巧:用QListWidget+CheckBox打造可交互列表(避坑指南)
  • React Hot Toast 终极指南:如何集成 Font Awesome 与 Material Icons 自定义图标
  • 避开AgentScope新手常踩的5个坑:从工具定义到多智能体通信的实战避雷指南
  • OpenClaw多任务调度:Qwen3-14b_int4_awq协调并行工作流
  • Solon插件开发教程:如何扩展框架功能并贡献社区
  • 如何确保planck.js物理模拟的准确性:终极测试验证指南
  • 财务人必看:Scott第7版揭示的5个盈余管理陷阱(附真实案例拆解)
  • 革命性无代码网站构建器Silex:10分钟创建专业静态网站的完整指南
  • 小白友好:OpenClaw镜像体验馆之Qwen3-32B智能周报生成
  • OpenClaw性能调优:加速Kimi-VL-A3B-Thinking多模态响应速度
  • AI模型部署全流程
  • 第四篇:GitHub Copilot:IDE里的沉默革命者——最稳代码补全王者,VS Code生态下的生产力核弹