在Linux系统中,监控网络带宽使用情况是系统管理和故障排查的重要环节,通过实时或历史数据可以定位网络瓶颈、发现异常流量或优化资源配置,Linux提供了多种命令行工具和实用程序,帮助用户从不同维度查看系统带宽使用情况,以下将详细介绍这些工具的使用方法、输出解析及适用场景。
iftop:实时按连接查看带宽
iftop是一款基于libpcap的实时网络流量监控工具,以列表形式显示当前网络连接的带宽占用情况,支持按IP、端口、协议等维度排序,适合快速定位高流量连接。
安装
- Ubuntu/Debian:
sudo apt install iftop
- CentOS/RHEL:
sudo yum install iftop
(需EPEL源)
常用参数
-i
:指定网络接口,如iftop -i eth0
;-n
:以数字形式显示IP和端口,避免DNS解析;-t
:显示流量条形图,直观展示流量趋势;-P
:按端口显示连接信息,便于识别服务;-b
:以字节为单位显示流量(默认为比特)。
输出解析
运行iftop
后,界面分为三部分:
- 顶部统计行:显示网卡总带宽(如“eth0”的“TX/RX”峰值)、平均流量及峰值时间;
- 中部连接列表:左侧为源IP/端口,右侧为目标IP/端口,中间
=>
和<=
分别表示发送(TX)和接收(RX)流量,数值为实时速率(如25M
表示1.25Mbps); - 底部流量条:横向条形图实时显示当前流量占比,绿色代表发送,蓝色代表接收。
示例
sudo iftop -i eth0 -n -t -P
此命令将以数字+条形图模式监控eth0接口,并按端口显示连接,快速定位占用带宽的服务(如HTTP、SSH)。
nethogs:按进程查看带宽
nethogs按进程维度统计网络带宽,适合查找具体哪个应用程序(如下载工具、视频软件)导致流量异常,支持实时刷新和流量排序。
安装
- Ubuntu/Debian:
sudo apt install nethogs
- CentOS/RHEL:
sudo yum install nethogs
常用参数
-d
:刷新间隔(秒),默认为1;-t
:按流量排序(默认按PID);-p
:以PID形式显示进程,避免进程名解析延迟;-c
:刷新次数,如nethogs -c 5
仅刷新5次后退出。
输出解析
输出分为三列:
- PID:进程ID;
- USER:进程所属用户;
- DEVICE:使用的网络接口;
- SENT/RECEIVED:该进程的发送/接收速率(KB/s);
- TOTAL:累计流量(KB)。
若发现某个进程(如PID为1234的chrome
)流量异常,可结合ps -ef 1234
进一步确认进程详情,或用kill 1234
终止进程。
bmon:可视化实时带宽监控
bmon(Bandwidth Monitor)以文本界面提供可视化流量图表,支持多接口监控和流量统计,适合需要直观展示网络趋势的场景。
安装
- Ubuntu/Debian:
sudo apt install bmon
- CentOS/RHEL:
sudo yum install bmon
常用参数
-r
:只读模式,避免修改配置;-p
:指定接口列表,如bmon -p eth0,wlan0
;-u
:使用单位(K/M/G),默认自动适配。
界面布局
启动后分为三个区域:
- 流量图:横向条形图实时显示各接口RX/TX流量,颜色区分;
- 接口统计:显示每个接口的RX/TX总流量、平均速率、峰值等;
- 连接列表:显示当前活跃连接的IP和端口(需开启
show-details
)。
通过按键l
切换流量图长度,d
显示/隐藏详细信息,适合演示或长期监控。
vnstat:基于数据库的历史带宽统计
vnstat通过后台服务持续收集网络流量数据,存储在SQLite数据库中,支持按天、周、月、年查询历史流量,适合长期带宽趋势分析。
安装
- Ubuntu/Debian:
sudo apt install vnstat
- CentOS/RHEL:
sudo yum install vnstat
常用命令
- 实时流量:
vnstat -l
,显示当前RX/TX速率; - 按天统计:
vnstat -d
,显示每日总流量及峰值; - 按月统计:
vnstat -m
,显示每月流量趋势; - 指定接口:
vnstat -i eth0 -d
,查询eth0接口的日流量。
数据库位置
默认数据库位于/var/lib/vnstat/
,可通过vnstat --dbdir /path/to/db
指定路径,若需持久化监控,需启用systemctl enable vnstat
服务。
sar:系统活动报告器(sysstat组件)
sar是sysstat工具包的一部分,通过-n DEV
参数可查看网络设备的RX/TX统计,支持按时间间隔多次采样,适合结合系统负载分析网络性能。
安装
- Ubuntu/Debian:
sudo apt install sysstat
- CentOS/RHEL:默认已安装,或
sudo yum install sysstat
常用命令
sar -n DEV 1 5 # 每秒采样1次,共5次,显示网络设备流量
输出解析
IFACE
:网络接口名;rx/sync
:每秒接收数据包数(sync指同步包);tx/sync
:每秒发送数据包数;rxkb/s
:每秒接收流量(KB/s);txkb/s
:每秒发送流量(KB/s)。
sar的优势在于可与CPU、I/O等系统数据联动分析,例如当rxkb/s
很高但CPU利用率低时,可能存在网络拥塞而非处理瓶颈。
iptraf-ng:图形化网络监控工具
iptraf-ng提供交互式文本界面,支持LAN流量统计、接口分析、TCP/UDP协议监控等功能,适合需要详细协议分析的场景。
安装
- Ubuntu/Debian:
sudo apt install iptraf-ng
- CentOS/RHEL:
sudo yum install iptraf-ng
使用方法
启动后进入主菜单,选择:
- LAN traffic:监控局域网内主机流量;
- Interface statistics:查看指定接口的RX/TX包数、错误数、带宽;
- TCP/UDP service monitor:按端口分析协议流量。
通过按键F2
可设置过滤规则(如仅监控特定IP),q
退出当前界面,适合网络管理员排查局域网异常流量。
tc:流量控制与带宽查看
tc(Traffic Control)是Linux内核流量控制工具,主要用于限速、QoS调度,但通过tc show
或tc -s qdisc
可查看接口的流量统计和队列状态。
常用命令
tc qdisc show dev eth0 # 查看eth0的队列规则 tc -s class show dev eth0 # 显示分类器的详细统计(如流量、包数)
输出中包含bytes
(总字节数)、packets
(总包数)、rate
(当前速率)等字段,适合已配置流量控制的场景查看限速效果。
工具对比与选择
工具名称 | 功能特点 | 适用场景 | 是否需安装 | 命令示例 |
---|---|---|---|---|
iftop | 实时按连接排序,显示IP/端口 | 快速定位高流量连接 | 是 | iftop -i eth0 -n |
nethogs | 按进程统计带宽,支持流量排序 | 查找异常带宽的进程 | 是 | nethogs -d 2 -t |
bmon | 可视化流量图,多接口支持 | 直观展示流量趋势,演示 | 是 | bmon -p eth0,wlan0 |
vnstat | 历史流量统计,按天/周/月查询 | 长期带宽趋势分析 | 是 | vnstat -m -i eth0 |
sar | 系统级网络统计,联动CPU/I/O | 结合系统性能分析网络瓶颈 | 部分需安装 | sar -n DEV 1 5 |
iptraf-ng | 图形化界面,支持协议和LAN分析 | 局域网流量监控,协议排查 | 是 | iptraf-ng |
tc | 流量控制与队列统计 | 查看限速规则效果,QoS调试 | 内置 | tc -s class show dev |
相关问答FAQs
Q1:iftop显示的“total send”和“total receive”是什么意思?如何理解其数值单位?
A:“total send”和“total receive”分别表示从启动iftop到当前时刻,网络接口的总发送流量和总接收流量,默认单位为“比特”(bits),1.25M”表示1.25兆比特(Mbps);若使用-b
参数,则单位为“字节”(bytes),1.25M”表示1.25兆字节(MB/s),注意:1字节=8比特,因此在对比流量时需确保单位一致,若需查看实时速率而非累计流量,关注界面中间的“=>”(发送)和“<=”(接收)列,其数值为当前瞬时速率。
Q2:如何通过nethogs找到并终止占用带宽的恶意进程?
A:步骤如下:
- 启动nethogs:使用
sudo nethogs -t -d 2
(按流量排序,每2秒刷新),以管理员权限运行才能查看所有进程; - 定位异常进程:观察输出中的“SENT”和“RECEIVED”列,若发现某个进程(如PID为5678的
python
)速率异常高(如持续占用50MB/s以上),且进程名可疑(如非系统自带程序); - 确认进程详情:通过
ps -ef 5678
查看进程路径、启动命令及用户,确认是否为恶意程序(如挖矿木马、后门); - 终止进程:若确认异常,使用
sudo kill 5678
正常终止,或sudo kill -9 5678
强制终止(需谨慎,可能导致数据丢失); - 后续处理:检查系统是否有其他异常进程,并分析恶意程序的来源(如下载的软件、恶意脚本),及时修复安全漏洞。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/22264.html