news 2026/10/15 23:01:10

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/10/15 4:54:21

AI生成网站入门指南:从零基础到专业建站的路径

过去&#xff0c;搭建一个网站往往意味着「会代码 懂服务器 找设计师」。而现在&#xff0c;AI生成网站正在彻底改变这条路径。即使是零基础用户&#xff0c;也可以通过自然语言&#xff0c;把一个想法快速变成可用的网站或系统。这篇文章会从入门视角&#xff0c;拆解 AI生成…

作者头像 李华
网站建设 2026/10/14 19:27:20

基于 Spring AI Alibaba 构建企业级智能客服

基于 Spring AI Alibaba 构建企业级智能客服 ——Graph 工作流 Java 实战:电商售后工单的智能化落地 关键词:Spring AI Alibaba、Graph、RAG、Function Calling、企业级 AI 客服 适用场景:电商售后 / 技术支持 / 工单系统 一、为什么“电商售后 + 技术支持”是 AI 客服最…

作者头像 李华
网站建设 2026/10/15 16:30:20

电气监测数据如何成为碳核算与交易的黄金标准?

在"双碳"目标的宏大叙事下&#xff0c;每一吨二氧化碳的减排都意义非凡。然而&#xff0c;对绝大多数企业而言&#xff0c;碳管理仍停留在"宏观估算"和"年度报告"的层面。一个根本性难题在于&#xff1a;我们难以将最终的碳排放总量&#xff0c;…

作者头像 李华
网站建设 2026/10/15 16:31:07

程序员年薪百万的八大硬核技术方向:AI与大模型研发领跑高薪榜单

本文详细介绍了八大高薪技术就业方向&#xff0c;包括AI与大模型研发、芯片设计、大数据、网络安全、智能硬件、新能源、量化投资和生物医药。每个方向均分析核心岗位、薪资水平、能力要求和行业趋势&#xff0c;显示这些领域结合技术前沿与高薪潜力&#xff0c;为求职者提供年…

作者头像 李华
网站建设 2026/10/15 4:05:53

转行AI产品经理:零基础入门到求职实战 | 建议收藏学习

建弦AI产品营9.0专为转型AI产品经理人群设计&#xff0c;面向零基础在校生、传统产品经理及行业从业者。课程提供从AI基础知识到项目实战的完整体系&#xff0c;帮助学员构建大模型知识框架&#xff0c;完成可展示的AI产品项目&#xff0c;并获得简历优化和面试指导。通过系统学…

作者头像 李华