news 2026/3/31 16:01:25

nethogs 与 iftop 网络监控工具实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
nethogs 与 iftop 网络监控工具实战指南

目录标题

  • nethogs 与 iftop 网络监控工具实战指南
    • 一、工具简介
    • 二、nethogs - 按进程监控带宽
      • 2.1 安装
      • 2.2 基本用法
      • 2.3 实测输出示例
      • 2.4 命令行参数
      • 2.5 交互式快捷键
      • 2.6 实用技巧
    • 三、iftop - 实时连接流量监控
      • 3.1 安装
      • 3.2 基本用法
      • 3.3 实测输出示例
      • 3.4 命令行参数
      • 3.5 交互式快捷键
      • 3.6 实用技巧
    • 四、实战场景
      • 场景1:服务器流量异常,快速定位问题进程
      • 场景2:分析与特定主机的通信
      • 场景3:双终端诊断
      • 场景4:记录流量日志
      • 场景5:监控 Web 服务流量
      • 场景6:检测可疑连接
      • 场景7:监控容器网络流量
    • 五、工具对比总结
    • 六、常见问题
      • Q1: 为什么显示 "unknown TCP"?
      • Q2: iftop 显示的流量和系统网卡统计不一致?
      • Q3: 如何监控容器或 pod 的网络流量?
      • Q4: iftop 使用过滤器时没有输出?
    • 七、命令验证说明

nethogs 与 iftop 网络监控工具实战指南

所有命令已在 OpenEuler 22.03 SP1 环境下验证通过

一、工具简介

工具功能监控维度适用场景
nethogs按进程监控网络带宽进程级别 (PID/程序名)快速定位占用带宽的进程
iftop实时显示网络连接流量连接级别 (主机/IP)分析网络通信对象和流量方向

环境信息

  • 操作系统:Linux 5.10.0-136.12.0.86.oe2203sp1.x86_64
  • nethogs 版本:0.8.6
  • iftop 版本:1.0pre4-1.oe2203sp1.x86_64

二、nethogs - 按进程监控带宽

2.1 安装

# CentOS/RHEL/Fedorasudoyuminstallnethogs# 或sudodnfinstallnethogs# Debian/Ubuntusudoaptinstallnethogs# Arch Linuxsudopacman -S nethogs

2.2 基本用法

# 需要 root 权限运行sudonethogs# 监控指定网络接口sudonethogs eth0sudonethogs ens33# 监控所有网络接口sudonethogs -a# 设置刷新间隔(秒)sudonethogs -d3# 指定采样次数后退出sudonethogs -c10

2.3 实测输出示例

Refreshing: PROGRAM PID USER DEV SENT RECEIVED kube-apiserver 2828370 root ens3 256.47 27.25 KB/s etcd 2827833 root ens3 31.30 18.63 KB/s claude 2517854 root ens3 56.94 2.06 KB/s sshd: root@pts/0 4098256 root ens3 4.31 0.55 KB/s kube-scheduler 4016 root ens3 0.01 0.01 KB/s unknown TCP/0 0 ens3 0.00 0.00 KB/s

字段说明

  • PROGRAM:进程名或连接信息
  • PID:进程 ID(0 表示未知)
  • USER:运行用户
  • DEV:网络接口名称
  • SENT:上传速率(默认 KB/s)
  • RECEIVED:下载速率(默认 KB/s)

2.4 命令行参数

参数说明验证状态
-V显示版本号
-h显示帮助信息
-bbughunt 模式(隐含 tracemode)
-d seconds设置刷新间隔(默认 1 秒)
-v mode显示模式:
0 = KB/s(默认)
1 = total KB
2 = total B
3 = total MB
4 = MB/s
5 = GB/s
-c count采样次数,默认 0(无限)
-ttrace 模式(文本输出)
-p混杂模式抓包(不推荐)
-s按发送流量排序
-l显示完整命令行
-a监控所有设备(包括 lo 和已停止的)
-C同时捕获 TCP 和 UDP
-f filter使用 pcap 过滤器(实验性)

2.5 交互式快捷键

按键功能
q退出程序
s按发送流量排序
r按接收流量排序
l显示/隐藏完整命令行
m切换单位模式(总量/速率)

2.6 实用技巧

# ✅ 文本模式输出(适合脚本)sudonethogs -t -c5-d2# ✅ 按 MB/s 显示sudonethogs -v4# ✅ 显示完整命令行sudonethogs -l# ✅ 只监控 TCP 流量sudonethogs -f"tcp"

三、iftop - 实时连接流量监控

3.1 安装

# CentOS/RHEL(需要 EPEL 源)sudoyuminstallepel-releasesudoyuminstalliftop# Debian/Ubuntusudoaptinstalliftop# Arch Linuxsudopacman -S iftop# Fedorasudodnfinstalliftop

3.2 基本用法

# ✅ 需要 root 权限运行sudoiftop# ✅ 监控指定接口sudoiftop -i eth0sudoiftop -i ens33# ✅ 不解析主机名(更快)sudoiftop -n# ✅ 不解析端口服务名sudoiftop -N# ✅ 显示端口号sudoiftop -P# ✅ 使用字节而非位sudoiftop -B

3.3 实测输出示例

# Host name (port/service if enabled) last 2s last 10s last 40s cumulative -------------------------------------------------------------------------------------------- 1 10.10.186.148:otv => 0b 0b 0b 0B 10.10.186.150:45136 <= 2.70Mb 2.70Mb 2.70Mb 690KB 2 10.10.186.148:sun-sr-https => 294Kb 294Kb 294Kb 73.5KB 10.10.186.147:35888 <= 9.02Kb 9.02Kb 9.02Kb 2.25KB 3 10.10.186.148:sun-sr-https => 219Kb 219Kb 219Kb 54.7KB 10.10.186.141:57034 <= 13.0Kb 13.0Kb 13.0Kb 3.24KB -------------------------------------------------------------------------------------------- Total send rate: 6.05Mb 6.05Mb 6.05Mb Total receive rate: 4.03Mb 4.03Mb 4.03Mb Total send and receive rate: 10.1Mb 10.1Mb 10.1Mb -------------------------------------------------------------------------------------------- Peak rate (sent/received/total): 6.05Mb 4.03Mb 10.1Mb Cumulative (sent/received/total): 1.51MB 1.01MB 2.52MB ============================================================================================

字段说明

  • #:连接序号
  • 主机地址:本地地址 => 远程地址
  • =>:发送方向
  • <=:接收方向
  • last 2s:最近 2 秒平均速率
  • last 10s:最近 10 秒平均速率
  • last 40s:最近 40 秒平均速率
  • cumulative:累计总流量

3.4 命令行参数

参数说明验证状态
-h显示帮助信息
-n不进行主机名解析
-N不进行端口服务名解析
-p混杂模式(显示同一网段其他主机流量)
-b不显示流量条形图
-B以字节(Byte)显示,而非位(bit)
-a以包(packet)为单位显示带宽
-i interface监控指定网络接口
-f filter code使用 tcpdump 风格的过滤器
-F net/mask显示特定 IPv4 网络的流量
-G net6/mask6显示特定 IPv6 网络的流量
-l显示并计算链路本地 IPv6 流量
-P同时显示端口号
-m limit设置带宽刻度的上限值
-c config file指定配置文件
-t使用文本界面(无需 ncurses)

排序选项

参数说明验证状态
-o 2s按第一列(2秒平均)排序
-o 10s按第二列(10秒平均)排序(默认)
-o 40s按第三列(40秒平均)排序
-o source按源地址排序
-o destination按目标地址排序

3.5 交互式快捷键

按键功能
h显示/隐藏帮助信息
n切换主机名解析
N切换端口服务名解析
p暂停/恢复显示
P切换端口显示
t切换文本界面
s切换源地址显示
d切换显示模式(发送/接收/总和)
1/2/3切换排序列
<按源地址排序
>按目标地址排序
q退出程序

3.6 实用技巧

# ✅ 文本模式运行指定时间sudoiftop -t -i eth0# ✅ 不解析任何名称,最快sudoiftop -nN -i eth0# ✅ 显示端口号sudoiftop -nP -i eth0# ⚠️ 只看特定端口(如 HTTP)- 需要一定时间捕获数据sudoiftop -f"port 80"-i eth0# ⚠️ 只看特定主机 - 需要一定时间捕获数据sudoiftop -f"host 192.168.1.100"-i eth0# ✅ 使用字节单位sudoiftop -B -i eth0

四、实战场景

场景1:服务器流量异常,快速定位问题进程

# ✅ 使用 nethogs 快速找到占用带宽的进程sudonethogs -a -d2

诊断思路

  1. 观察 SENT 和 RECEIVED 列,找出流量最高的进程
  2. 记录 PID,使用ps -fp <PID>查看进程详情
  3. 如需停止,使用kill <PID>systemctl stop <service>

场景2:分析与特定主机的通信

# ✅ 使用 iftop 监控与特定 IP 的连接sudoiftop -nN -i eth0|grep"192.168.1.100"# ✅ 或使用过滤器(需要等待数据捕获)sudoiftop -f"host 192.168.1.100"-i eth0

场景3:双终端诊断

# 终端1:监控整体连接sudoiftop -nN -i eth0# 终端2:监控进程流量sudonethogs eth0

场景4:记录流量日志

#!/bin/bash# ✅ 每5分钟记录一次网络状态whiletrue;doecho"===$(date)===">>/var/log/netstats.logsudonethogs -t -c5-d1>>/var/log/netstats.log2>&1echo"">>/var/log/netstats.logsleep300done

场景5:监控 Web 服务流量

# ✅ 只监控 HTTP/HTTPS 端口sudoiftop -nP -f"port 80 or port 443"-i eth0

场景6:检测可疑连接

# ✅ 文本模式运行30秒,记录所有连接sudotimeout30iftop -t -nN -i eth0>/tmp/iftop_report.txt

场景7:监控容器网络流量

# ✅ 对于 Docker 容器,获取容器的网络命名空间PID=$(dockerinspect -f'{{.State.Pid}}'<container_name>)sudonsenter -n -t$PIDnethogs# ✅ 或者在宿主机上使用 iftop 配合过滤sudoiftop -nN -i docker0

五、工具对比总结

特性nethogsiftop
监控对象按进程按连接/IP
显示信息进程名/PID/用户源地址/目标地址/端口
流量方向发送/接收双向箭头显示
易用性简单直观信息更详细
适用场景找问题进程分析网络连接
权限要求需要 root需要 root
输出格式表格/文本图形/文本

选择建议

  • 🔍 想快速知道哪个程序在占用带宽→ 用nethogs
  • 🔍 想详细分析和谁通信、流量多少→ 用iftop
  • 💡同时使用:一个终端运行 nethogs,另一个运行 iftop

六、常见问题

Q1: 为什么显示 “unknown TCP”?

这是 nethogs 无法关联到具体进程的连接,可能是:

  • 短暂的连接已结束
  • 内核态连接
  • 需要使用-p混杂模式

Q2: iftop 显示的流量和系统网卡统计不一致?

  • iftop 只统计 IP 流量,不包括 ARP 等非 IP 流量
  • 可能有其他网络接口未被监控
  • 检查是否启用了混杂模式-p

Q3: 如何监控容器或 pod 的网络流量?

# ✅ 对于 Docker 容器,获取容器的网络命名空间PID=$(dockerinspect -f'{{.State.Pid}}'<container_name>)sudonsenter -n -t$PIDnethogs# ✅ 或者在宿主机上使用 iftop 配合过滤sudoiftop -nN -i docker0

Q4: iftop 使用过滤器时没有输出?

使用-f参数指定过滤器时,iftop 需要时间来捕获和过滤数据包。如果没有匹配的流量,输出可能为空或只有表头。建议:

  • 确认过滤语法正确(使用 tcpdump 风格的 BPF 语法)
  • 等待足够的时间让数据包被捕获
  • 使用-t文本模式配合timeout命令控制运行时间

七、命令验证说明

本文档中的所有命令已在以下环境中验证:

测试环境

  • 操作系统:OpenEuler 22.03 SP1
  • 内核版本:Linux 5.10.0-136.12.0.86.oe2203sp1.x86_64
  • nethogs 版本:0.8.6
  • iftop 版本:1.0pre4-1.oe2203sp1.x86_64
  • Docker 版本:已安装可用
  • 测试日期:2026-02-03

验证状态说明

  • ✅ 命令已验证通过
  • ⚠️ 命令可用但需要特定条件(如时间、流量等)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/22 8:46:20

GP8630N I2C和PWM转±10V/0-5V/0-10V/4-20mA DAC模块原理图设计,已量产

目录 1、核心 DAC 驱动:GP8630N 的参数落地设计 2、电源系统:支撑 12V 对称输出的核心逻辑 3、核心参数解读:不止于 “数字好看” 3.1、16bit(I2C)+0.2% 满量程误差:工业级精度的底线 3.2、多类型输出:一套模块覆盖主流模拟信号需求 3.3、宽输入供电:适配不同主控…

作者头像 李华
网站建设 2026/3/22 8:46:19

考研资源合集

21.【2026年考研英语】 文件大小: 20.5GB内容特色: 全程带学&#xff0c;词汇阅读写作翻译一站式搞定适用人群: 备战2026考研英语一/二的全体考生核心价值: 20.5GB高清视频讲义&#xff0c;系统提分冲刺名校下载链接: https://pan.quark.cn/s/98d2f4795af1 【25考研】考研专业…

作者头像 李华
网站建设 2026/3/31 3:09:51

现在学嵌入式怎么样?

看到很多人都在问&#xff1a;现在学嵌入式怎么样&#xff1f; 我们从行业需求、人群画像、学习路径等方面进行详细分析~ 一&#xff09;行业需求&#xff1a;行业缺口大&#xff0c;高阶人才供不应求 2024 年以来&#xff0c;嵌入式行业正经历新一轮洗牌。互联网裁员潮下&…

作者头像 李华
网站建设 2026/3/22 8:46:15

2026 AI Agent趋势报告

《2026 AI Agent 趋势报告》指出&#xff0c;AI Agent 正引发计算模式从 “问答” 到 “行动” 的范式转移&#xff0c;其不再被动响应&#xff0c;而是主动理解目标、制定复杂计划并跨应用协同执行&#xff0c;成为企业数字化转型的关键驱动力。关注公众号&#xff1a;【互联互…

作者头像 李华
网站建设 2026/3/27 10:21:06

物联网如何助力传统农业

在科技飞速发展的今天&#xff0c;物联网这个词越来越频繁地出现在我们的视野中。它不仅改变了我们的生活方式&#xff0c;还为传统农业的发展带来了新的机遇。那么&#xff0c;物联网究竟是如何助力传统农业更进一步的呢&#xff1f;精准感知与智能决策传统农业往往依赖农民的…

作者头像 李华
网站建设 2026/3/31 6:29:02

Pulsar 职位|云原生消息平台内核开发实习生(Pulsar 方向)

实习地点 可远程 关于我们 谙流科技是一家专注于金融级云原生消息流领域的领先技术公司。我们的核心产品之一——谙流 ASP&#xff0c;是基于 Apache Pulsar 自研的云原生分布式消息流平台。通过存算分离架构&#xff0c;我们实现了可靠性升级、性能突破与弹性扩展&#xff0c;…

作者头像 李华