视频会议外设实操培训胶片设计指南
2026/9/25 1:14:39
✅所有命令已在 OpenEuler 22.03 SP1 环境下验证通过
| 工具 | 功能 | 监控维度 | 适用场景 |
|---|---|---|---|
| nethogs | 按进程监控网络带宽 | 进程级别 (PID/程序名) | 快速定位占用带宽的进程 |
| iftop | 实时显示网络连接流量 | 连接级别 (主机/IP) | 分析网络通信对象和流量方向 |
环境信息:
# CentOS/RHEL/Fedorasudoyuminstallnethogs# 或sudodnfinstallnethogs# Debian/Ubuntusudoaptinstallnethogs# Arch Linuxsudopacman -S nethogs# 需要 root 权限运行sudonethogs# 监控指定网络接口sudonethogs eth0sudonethogs ens33# 监控所有网络接口sudonethogs -a# 设置刷新间隔(秒)sudonethogs -d3# 指定采样次数后退出sudonethogs -c10Refreshing: 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)| 参数 | 说明 | 验证状态 |
|---|---|---|
-V | 显示版本号 | ✅ |
-h | 显示帮助信息 | ✅ |
-b | bughunt 模式(隐含 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(无限) | ✅ |
-t | trace 模式(文本输出) | ✅ |
-p | 混杂模式抓包(不推荐) | ✅ |
-s | 按发送流量排序 | ✅ |
-l | 显示完整命令行 | ✅ |
-a | 监控所有设备(包括 lo 和已停止的) | ✅ |
-C | 同时捕获 TCP 和 UDP | ✅ |
-f filter | 使用 pcap 过滤器(实验性) | ✅ |
| 按键 | 功能 |
|---|---|
q | 退出程序 |
s | 按发送流量排序 |
r | 按接收流量排序 |
l | 显示/隐藏完整命令行 |
m | 切换单位模式(总量/速率) |
# ✅ 文本模式输出(适合脚本)sudonethogs -t -c5-d2# ✅ 按 MB/s 显示sudonethogs -v4# ✅ 显示完整命令行sudonethogs -l# ✅ 只监控 TCP 流量sudonethogs -f"tcp"# CentOS/RHEL(需要 EPEL 源)sudoyuminstallepel-releasesudoyuminstalliftop# Debian/Ubuntusudoaptinstalliftop# Arch Linuxsudopacman -S iftop# Fedorasudodnfinstalliftop# ✅ 需要 root 权限运行sudoiftop# ✅ 监控指定接口sudoiftop -i eth0sudoiftop -i ens33# ✅ 不解析主机名(更快)sudoiftop -n# ✅ 不解析端口服务名sudoiftop -N# ✅ 显示端口号sudoiftop -P# ✅ 使用字节而非位sudoiftop -B# 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:累计总流量| 参数 | 说明 | 验证状态 |
|---|---|---|
-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 | 按目标地址排序 | ✅ |
| 按键 | 功能 |
|---|---|
h | 显示/隐藏帮助信息 |
n | 切换主机名解析 |
N | 切换端口服务名解析 |
p | 暂停/恢复显示 |
P | 切换端口显示 |
t | 切换文本界面 |
s | 切换源地址显示 |
d | 切换显示模式(发送/接收/总和) |
1/2/3 | 切换排序列 |
< | 按源地址排序 |
> | 按目标地址排序 |
q | 退出程序 |
# ✅ 文本模式运行指定时间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# ✅ 使用 nethogs 快速找到占用带宽的进程sudonethogs -a -d2诊断思路:
ps -fp <PID>查看进程详情kill <PID>或systemctl stop <service># ✅ 使用 iftop 监控与特定 IP 的连接sudoiftop -nN -i eth0|grep"192.168.1.100"# ✅ 或使用过滤器(需要等待数据捕获)sudoiftop -f"host 192.168.1.100"-i eth0# 终端1:监控整体连接sudoiftop -nN -i eth0# 终端2:监控进程流量sudonethogs eth0#!/bin/bash# ✅ 每5分钟记录一次网络状态whiletrue;doecho"===$(date)===">>/var/log/netstats.logsudonethogs -t -c5-d1>>/var/log/netstats.log2>&1echo"">>/var/log/netstats.logsleep300done# ✅ 只监控 HTTP/HTTPS 端口sudoiftop -nP -f"port 80 or port 443"-i eth0# ✅ 文本模式运行30秒,记录所有连接sudotimeout30iftop -t -nN -i eth0>/tmp/iftop_report.txt# ✅ 对于 Docker 容器,获取容器的网络命名空间PID=$(dockerinspect -f'{{.State.Pid}}'<container_name>)sudonsenter -n -t$PIDnethogs# ✅ 或者在宿主机上使用 iftop 配合过滤sudoiftop -nN -i docker0| 特性 | nethogs | iftop |
|---|---|---|
| 监控对象 | 按进程 | 按连接/IP |
| 显示信息 | 进程名/PID/用户 | 源地址/目标地址/端口 |
| 流量方向 | 发送/接收 | 双向箭头显示 |
| 易用性 | 简单直观 | 信息更详细 |
| 适用场景 | 找问题进程 | 分析网络连接 |
| 权限要求 | 需要 root | 需要 root |
| 输出格式 | 表格/文本 | 图形/文本 |
选择建议:
这是 nethogs 无法关联到具体进程的连接,可能是:
-p混杂模式-p# ✅ 对于 Docker 容器,获取容器的网络命名空间PID=$(dockerinspect -f'{{.State.Pid}}'<container_name>)sudonsenter -n -t$PIDnethogs# ✅ 或者在宿主机上使用 iftop 配合过滤sudoiftop -nN -i docker0使用-f参数指定过滤器时,iftop 需要时间来捕获和过滤数据包。如果没有匹配的流量,输出可能为空或只有表头。建议:
-t文本模式配合timeout命令控制运行时间本文档中的所有命令已在以下环境中验证:
测试环境:
验证状态说明: