news 2026/4/18 8:39:51

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/4/18 8:08:40

永别了,互联网!Anthropic联创爆料:人类彻底出局

推开门&#xff0c;你闯进一场「外星人大会」——只不过外星人全是AI。Moltbook这间机器狂欢厅&#xff0c;正在把互联网从人类手里悄悄夺走。 现在的互联网&#xff0c;是真的有点发疯&#xff01; 此时此刻&#xff0c;我们的互联网正在经历一场前所未有的「物种入侵」。 …

作者头像 李华
网站建设 2026/4/13 11:33:42

马斯克视频生成模型首次交卷!电影级运镜+音效,免费可玩

xAI模型支持文生视频、图生视频&#xff0c;单次生成时长为10秒&#xff0c;分辨率720P&#xff0c;音频效果实现大幅提升。马斯克第一时间就转发了该消息。xAI“迄今为止最强大的视频音频生成模型”Grok Imagine 1.0版本&#xff0c;正式全面上线。模型支持文生视频、图生视频…

作者头像 李华
网站建设 2026/4/17 19:09:21

提升大模型输出质量:约束优化7大维度,程序员必学收藏

文章提出优化大模型约束的七大维度&#xff1a;需求层级&#xff08;精简主次&#xff09;、表述精准&#xff08;具象量化&#xff09;、结构呈现&#xff08;优化排版&#xff09;、场景适配&#xff08;动态调整&#xff09;、逻辑自洽&#xff08;排查冲突&#xff09;、可…

作者头像 李华
网站建设 2026/4/18 8:00:53

智能垃圾桶:AI Agent的自动分类系统

智能垃圾桶:AI Agent的自动分类系统 关键词:智能垃圾桶、AI Agent、自动分类系统、机器学习、计算机视觉、垃圾分类 摘要:本文围绕智能垃圾桶的AI Agent自动分类系统展开,详细阐述了其核心概念、算法原理、数学模型等内容。首先介绍了系统开发的背景,包括目的、预期读者等…

作者头像 李华
网站建设 2026/4/17 12:49:20

5G时代,如何处理超大规模物联网数据

你好&#xff0c;我是程序员贵哥。 时间过的真快&#xff0c;转眼间我们已经结束了前五个模块的学习&#xff0c;来到了最后一个模块“大规模数据的挑战和未来”。 一门技术类课程的常见学习路线就是“过去→现在→未来”。这个专栏也是如此&#xff0c;我们首先研究了大数据处…

作者头像 李华