在运维工作中,实时掌握服务器的带宽流量情况是保障系统稳定运行的关键环节。无论是排查网络延迟、优化资源分配,还是应对突发流量峰值,准确的带宽数据都能为决策提供重要依据。本文将详细介绍 Linux 系统中常用的带宽流量查看命令,从基础工具到高级分析,帮助你全面监控服务器网络状态。
一、基础命令:快速获取带宽概览
1.1 ifconfig:传统网络接口信息查看
ifconfig 是 Linux 系统中最经典的网络配置工具,虽然在部分新发行版中已被 ip 命令取代,但仍广泛用于查看网络接口的基本信息,包括带宽使用情况。

使用方法:
直接输入 ifconfig 命令,输出结果中包含接口名称(如 eth0、ens33)、IP 地址、MAC 地址以及接收(RX)和发送(TX)的数据包统计:
ifconfig eth0
关键参数解析:
RX packets:接收的数据包总数TX packets:发送的数据包总数RX bytes:接收的总字节数TX bytes:发送的总字节数errors/dropped/overruns:错误、丢弃和溢出的数据包数量
局限性:
ifconfig 只能显示累计数据,无法实时监控带宽变化,适合快速查看接口基本状态。
1.2 ip 命令:现代网络管理工具
ip 命令是 ifconfig 的替代工具,功能更强大,支持更详细的网络配置和监控。
查看接口统计信息:
ip -s link show eth0
输出示例:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 00:16:3e:00:00:01 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
123456789 123456 0 0 0 0
TX: bytes packets errors dropped carrier collsns
987654321 654321 0 0 0 0
优势:
- 支持更丰富的参数(如
-s显示统计信息) - 输出格式更清晰,便于脚本解析
- 兼容现代网络技术(如 VLAN、隧道等)
二、实时监控工具:动态跟踪带宽变化
2.1 iftop:实时带宽流量监控
iftop 是一款基于终端的实时带宽监控工具,能够直观显示各网络连接的带宽使用情况,按流量大小排序。
安装方法:
Debian/Ubuntu:sudo apt install iftop
CentOS/RHEL:sudo yum install iftop
使用方法:
直接运行 iftop,默认显示所有网络接口的实时流量。常用参数:
-i eth0:指定监控的接口-n:不解析主机名(加快显示速度)-B:以字节为单位显示带宽(默认是比特)-P:显示端口号
界面解析:
- 顶部:接口名称、IP 地址、当前带宽速率(分为 2 秒、10 秒、40 秒平均值)
- 中间:各连接的源 IP、目标 IP、带宽使用情况(箭头表示流量方向)
- 底部:累计流量统计
示例:
iftop -i eth0 -n -P
2.2 nload:直观的带宽趋势图
nload 以图形化方式展示实时带宽使用情况,分为上下两部分:上半部分显示接收流量,下半部分显示发送流量。
安装方法:
Debian/Ubuntu:sudo apt install nload
CentOS/RHEL:sudo yum install nload
使用方法:
直接运行 nload,默认监控所有接口。按 左右箭头 切换接口,按 q 退出。
界面解析:
- 左侧:当前带宽速率(实时值、平均值、最大值)
- 右侧:带宽使用趋势图(绿色表示接收,蓝色表示发送)
优势:
- 图形化展示更直观,适合快速观察带宽变化趋势
- 支持多接口切换,操作简单
三、高级分析工具:深入挖掘流量细节
3.1 tcpdump:数据包级别的流量分析
tcpdump 是一款强大的网络抓包工具,能够捕获并分析网络数据包,帮助定位具体的流量来源和协议。
安装方法:
Debian/Ubuntu:sudo apt install tcpdump
CentOS/RHEL:sudo yum install tcpdump
常用命令:
- 捕获所有接口的流量:
sudo tcpdump - 捕获指定接口的流量:
sudo tcpdump -i eth0 - 过滤特定端口(如 80):
sudo tcpdump port 80 - 保存捕获结果到文件:
sudo tcpdump -w traffic.pcap - 读取保存的文件:
sudo tcpdump -r traffic.pcap
示例:
捕获 HTTP 流量并显示详细信息:
sudo tcpdump -i eth0 port 80 -A
输出解析:
显示每个 HTTP 请求和响应的头部信息,便于分析具体的流量内容。
3.2 vnstat:长期带宽统计
vnstat 是一款轻量级的带宽监控工具,能够记录网络接口的历史流量数据,生成日、周、月统计报告。
安装方法:
Debian/Ubuntu:sudo apt install vnstat
CentOS/RHEL:sudo yum install vnstat
初始化接口:
首次使用需初始化监控接口:
sudo vnstat -u -i eth0
查看统计信息:
- 实时流量:
vnstat -l - 每日统计:
vnstat -d - 每月统计:
vnstat -m - 小时统计:
vnstat -h
示例输出:
eth0 / daily
day rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
2023-10-01 123.45 MB | 67.89 MB | 191.34 MB | 18.21 kbit/s
2023-10-02 234.56 MB | 123.45 MB | 358.01 MB | 33.98 kbit/s
------------------------+-------------+-------------+---------------
estimated 250 MB | 130 MB | 380 MB |
优势:
- 低资源占用,适合长期监控
- 支持多种统计维度,便于分析流量趋势
四、脚本化监控:自动化带宽数据收集
对于需要定期收集带宽数据的场景,可以通过脚本结合上述工具实现自动化监控。以下是一个简单的示例脚本,用于记录每小时的带宽使用情况:
#!/bin/bash
INTERFACE="eth0"
LOG_FILE="/var/log/bandwidth.log"
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
# 使用ip命令获取接收和发送字节数
RX_BYTES=$(ip -s link show $INTERFACE | awk '/RX:/ {getline; print $1}')
TX_BYTES=$(ip -s link show $INTERFACE | awk '/TX:/ {getline; print $1}')
# 计算带宽(假设上次记录的字节数保存在临时文件中)
if [ -f /tmp/bandwidth_last ]; then
LAST_RX=$(awk '{print $1}' /tmp/bandwidth_last)
LAST_TX=$(awk '{print $2}' /tmp/bandwidth_last)
DELTA_RX=$((RX_BYTES - LAST_RX))
DELTA_TX=$((TX_BYTES - LAST_TX))
# 转换为MB(1MB=1024*1024字节)
RX_MB=$(echo "scale=2; $DELTA_RX / (1024*1024)" | bc)
TX_MB=$(echo "scale=2; $DELTA_TX / (1024*1024)" | bc)
echo "$TIMESTAMP - $INTERFACE: RX $RX_MB MB, TX $TX_MB MB" >> $LOG_FILE
fi
# 保存当前字节数到临时文件
echo "$RX_BYTES $TX_BYTES" > /tmp/bandwidth_last
使用方法:
将脚本保存为 bandwidth_monitor.sh,添加执行权限:
chmod +x bandwidth_monitor.sh
通过 crontab 每小时执行一次:
crontab -e
# 添加以下行
0 * * * * /path/to/bandwidth_monitor.sh
五、总结与选择建议
不同的工具适用于不同的场景:
- 快速查看接口状态:
ifconfig或ip命令 - 实时带宽监控:
iftop(适合查看连接级流量)或nload(适合趋势观察) - 数据包分析:
tcpdump(定位具体流量问题) - 长期统计:
vnstat(生成历史报告)
在实际工作中,建议结合多种工具使用,例如用 iftop 实时监控异常流量,用 vnstat 分析长期趋势,用 tcpdump 深入排查问题。通过合理运用这些工具,你可以全面掌握服务器的带宽使用情况,为系统优化和故障排查提供有力支持。
希望本文能帮助你更好地理解和使用 Linux 系统中的带宽监控命令,提升运维效率。









留言0