在Linux系统中,监控入网带宽(即网络接口的接收带宽,RX)是系统管理和网络排查的重要任务,通过查看入网带宽,可以了解网络流量使用情况、识别异常流量、优化网络配置等,本文将详细介绍Linux系统中查看入网带宽的多种方法,涵盖命令行工具、图形化工具及历史统计工具,帮助用户根据实际需求选择合适的监控方式。
实时监控入网带宽的命令行工具
实时监控工具能够动态展示当前网络接口的接收速率、流量数据等,适用于短期流量分析和故障排查,以下是常用的实时监控工具:
iftop
:按连接显示实时带宽
iftop
是一款基于终端的带宽监控工具,以列表形式显示各个连接的实时接收(RX)和发送(TX)带宽,并支持按带宽大小排序、显示源/目标IP及端口等信息。
-
安装方法(以Ubuntu/Debian为例):
sudo apt install iftop
-
使用示例:
iftop -i eth0 # 指定监控eth0接口,默认显示所有连接
- 常用参数:
-n
:不解析主机名,直接显示IP地址;-N
:不解析端口号;-t
:不显示界面顶部的流量条,适合日志输出;-P
:显示端口信息。
- 常用参数:
-
输出说明:
界面顶部显示“total send”和“total receive”的实时带宽,中间列表按连接排序,=>
表示发送,<=
表示接收,右侧数值为当前带宽(单位为kb/s或Mb/s)。
nethogs
:按进程显示带宽占用
nethogs
以进程为单位监控带宽使用情况,能够快速定位占用大量入网带宽的进程,适合排查恶意程序或异常应用。
-
安装方法:
sudo apt install nethogs # Ubuntu/Debian sudo yum install nethogs # CentOS/RHEL
-
使用示例:
nethogs -d 5 # 每5秒刷新一次,默认监控所有接口 nethogs -i eth0 # 指定监控eth0接口
- 常用参数:
-d
:刷新间隔(秒);-t
:跟踪模式,显示TCP连接;-p
:避免混淆PID和端口。
- 常用参数:
-
输出说明:
显示进程名(PID)、当前接收(RX)和发送(TX)带宽,若某进程占用大量入网带宽,可结合ps
或top
进一步分析。
bmon
:带图形化界面的带宽监控
bmon
(Bandwidth Monitor)是一款灵活的带宽监控工具,支持实时图表和文本输出,可自定义显示内容(如流量、累计数据、错误包等)。
-
安装方法:
sudo apt install bmon
-
使用示例:
bmon -r eth0 # 监控eth0接口的接收流量(-r表示接收)
- 常用参数:
-p
:显示端口统计;-u
:使用单位(如kb、Mb、Gb);-o "ascii:detail"
:指定输出格式为详细文本模式。
- 常用参数:
-
输出说明:
默认界面分为两部分:左侧为实时流量柱状图(蓝色表示接收,红色表示发送),右侧为详细统计信息(如总接收字节数、当前速率等)。
iptraf-ng
:综合性网络监控工具
iptraf-ng
是iptraf
的升级版,提供图形化界面,支持监控接口流量、TCP/UDP连接、IP流量分布等,功能全面。
-
安装方法:
sudo apt install iptraf-ng
-
使用示例:
sudo iptraf-ng -i eth0 # 以root权限启动,选择"Interface"监控eth0
- 操作步骤:
启动后选择“Interface statistics”,指定接口即可查看实时接收/发送带宽、包数、错误率等信息。
- 操作步骤:
历史统计与长期带宽监控工具
实时监控无法保留历史数据,若需分析长期带宽趋势(如日/周/月流量统计),需使用历史记录工具:
vnstat
:基于数据库的流量统计
vnstat
通过记录网络接口的流量数据,生成历史统计报告,支持按天、周、月显示,适合长期带宽趋势分析。
-
安装方法:
sudo apt install vnstat
-
使用示例:
vnstat -i eth0 # 显示eth0的实时流量(默认显示当天) vnstat -d -i eth0 # 显示每日统计(过去几天) vnstat -w -i eth0 # 显示每周统计 vnstat -m -i eth0 # 显示每月统计
- 常用参数:
-l
:实时流量模式(类似iftop
);-h
:显示小时统计;-tr
:显示接收速率(RX rate)。
- 常用参数:
-
数据存储:
vnstat
默认将数据存储在/var/lib/vnstat/
目录下,可通过vnstat --dbdir
指定自定义路径。
sar
:系统活动报告工具
sar
(System Activity Reporter)是sysstat
包的一部分,可收集并报告系统历史数据,包括网络接口的接收/发送速率、包数等。
-
安装方法:
sudo apt install sysstat # Ubuntu/Debian sudo yum install sysstat # CentOS/RHEL
-
使用示例:
sar -n DEV 1 5 # 每秒更新一次,共5次,显示所有网络设备统计 sar -n DEV -s 10:00:00 -e 12:00:00 # 查看指定时间段的网络流量
- 输出说明:
rxpck/s
(接收包数/秒)、rxkB/s
(接收千字节/秒)、rxcmp/s
(接收压缩包数/秒)等指标,其中rxkB/s
直接反映入网带宽。
- 输出说明:
ip
命令:查看接口累计流量
Linux原生ip
命令可查看网络接口的统计信息,包括接收(RX)和发送(TX)的总字节数、包数、错误数等,适合快速检查接口流量。
- 使用示例:
ip -s link show eth0 # 显示eth0的详细统计信息
- 输出说明:
在RX
部分,bytes
表示总接收字节数,packets
表示总接收包数,errors
表示接收错误数,通过bytes
可计算时间段内的平均带宽。
- 输出说明:
图形化网络监控工具
对于习惯图形界面的用户,以下工具可直观展示入网带宽:
gnome-system-monitor
(GNOME环境)
GNOME自带的系统监控器,包含“网络”标签页,实时显示各接口的接收/发送速率,支持图表化展示。
- 使用方法:
启动gnome-system-monitor
,切换到“网络”选项卡,即可查看当前网络带宽使用情况。
ksysguard
(KDE环境)
KDE桌面环境的系统监控工具,支持自定义监控面板,可添加网络流量图表,实时显示入网带宽。
- 使用方法:
启动ksysguard
,在“传感器”中搜索“网络”相关传感器,拖拽至面板即可监控。
常用带宽监控工具对比
以下表格总结了上述工具的特点及适用场景:
工具名称 | 主要用途 | 安装命令(Ubuntu/Debian) | 关键参数/特点 | 适用场景 |
---|---|---|---|---|
iftop |
按连接实时监控带宽 | sudo apt install iftop |
-i 指定接口,-n 不解析主机名 |
短期流量分析、连接排查 |
nethogs |
按进程监控带宽占用 | sudo apt install nethogs |
-d 刷新间隔,-i 指定接口 |
异常进程定位 |
bmon |
图形化/文本实时监控 | sudo apt install bmon |
-r 接收流量,-o 自定义输出格式 |
可视化实时监控 |
iptraf-ng |
综合网络监控(接口/协议) | sudo apt install iptraf-ng |
图形化界面,支持TCP/UDP统计 | 全面网络分析 |
vnstat |
历史流量统计 | sudo apt install vnstat |
-d/-w/-m 按天/周/月统计 |
长期带宽趋势分析 |
sar |
系统历史数据报告 | sudo apt install sysstat |
-n DEV 查看网络统计,支持时间范围查询 |
企业级历史数据审计 |
ip |
接口累计流量查看 | 内置命令 | -s link show 显示详细统计 |
快速检查接口流量 |
Linux查看入网带宽的工具丰富多样,可根据需求选择:
- 实时监控:优先使用
iftop
(连接级)、nethogs
(进程级)或bmon
(可视化); - 历史统计:
vnstat
适合长期趋势,sar
适合企业级数据审计; - 图形化界面:GNOME的
gnome-system-monitor
或KDE的ksysguard
适合桌面用户。
通过合理搭配这些工具,可全面掌握网络带宽使用情况,及时发现并解决网络问题。
相关问答FAQs
Q1: 如何查看特定进程的入网带宽占用?
A: 使用nethogs
工具可按进程监控带宽占用,执行sudo nethogs -i eth0
,在输出结果中查看“PID”和“RX”列,即可定位占用入网带宽的具体进程,若需进一步分析,可结合ps -ef | grep <PID>
查看进程详细信息。
Q2: 如何设置带宽告警,当入网带宽超过阈值时通知管理员?
A: 可结合vnstat
和bc
计算实时带宽,通过mail
或curl
发送告警,编写脚本check_bandwidth.sh
:
#!/bin/bash INTERFACE="eth0" THRESHOLD_MB=100 # 阈值100MB/s vnstat -l -i $INTERFACE | grep "rx" | awk '{print $3}' | sed 's/Mb//' > /tmp/rx_rate current_rate=$(cat /tmp/rx_rate) if (( $(echo "$current_rate > $THRESHOLD_MB" | bc -l) )); then echo "入网带宽超过阈值: ${current_rate}Mb/s" | mail -s "带宽告警" admin@example.com fi
将脚本加入cron
定时任务(如每分钟执行一次),即可实现带宽超限告警。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/37663.html