答案是根据需求选择合适工具:长期趋势用vnstat,历史详细记录用sar,精确自定义统计则通过读取/proc/net/dev编写脚本实现,不同场景需分层处理以获得最佳效果。

在Linux上统计某段时间内的带宽使用,核心思路是利用系统提供的工具或接口,在时间段的起点和终点获取网络流量数据,然后计算差值。常用的方法包括使用
vnstat
sar
/proc/net/dev
当我在Linux系统上需要了解某个特定时间段的带宽使用情况时,我通常会根据需求选择不同的工具。这不是一个“一招鲜吃遍天”的问题,因为实时监控、长期趋势分析和精确到秒级的自定义统计,它们各自有最适合的解决方案。
对我而言,最直接且有效的策略是分层处理:
1. 长期趋势与聚合数据:vnstat
vnstat
安装通常很简单:
sudo apt install vnstat
sudo yum install vnstat
安装后,确保它正在运行并监控你的网络接口(例如
eth0
sudo vnstat --create -i eth0
sudo systemctl enable vnstat && sudo systemctl start vnstat
一旦
vnstat
vnstat -d
vnstat -m
vnstat -h
通过这些命令,我可以快速了解到某个特定日期或时间段的大致流量消耗。比如,我发现某天晚上网络特别慢,我就可以用
vnstat -h
2. 历史详细记录与特定时间段查询:sar
sar
sysstat
sar
/var/log/sa/
saXX
XX
eth0
sar -n DEV -s 09:00:00 -e 10:00:00 -i 300
-n DEV
-s
-e
-i 300
如果我想看昨天的同一时间段,就需要指定昨天的日志文件:
sar -f /var/log/sa/sa$(date -d 'yesterday' +%d) -n DEV -s 09:00:00 -e 10:00:00
3. 精确自定义时间段统计:/proc/net/dev
vnstat
sar
/proc/net/dev
我通常会写一个简单的bash脚本来实现这个目的:
#!/bin/bash
INTERFACE="eth0" # 替换成你的网络接口,如 eth0, enp0s3, etc.
DURATION_SECONDS=300 # 监控持续时间,单位秒 (这里是5分钟)
echo "开始监控 $INTERFACE 接口的带宽使用,持续 ${DURATION_SECONDS} 秒..."
# 获取初始字节计数
read -r _ _ RX_BYTES_START TX_BYTES_START _ < <(grep "$INTERFACE:" /proc/net/dev | awk '{print $2, $10}')
# 等待指定时间
sleep "$DURATION_SECONDS"
# 获取最终字节计数
read -r _ _ RX_BYTES_END TX_BYTES_END _ < <(grep "$INTERFACE:" /proc/net/dev | awk '{print $2, $10}')
# 计算差异
RX_DIFF=$((RX_BYTES_END - RX_BYTES_START))
TX_DIFF=$((TX_BYTES_END - TX_BYTES_START))
# 转换为MB并计算平均速率 (KB/s)
TOTAL_RX_MB=$(echo "scale=2; $RX_DIFF / 1024 / 1024" | bc)
TOTAL_TX_MB=$(echo "scale=2; $TX_DIFF / 1024 / 1024" | bc)
AVG_RX_KBPS=$(echo "scale=2; $RX_DIFF / $DURATION_SECONDS / 1024" | bc)
AVG_TX_KBPS=$(echo "scale=2; $TX_DIFF / $DURATION_SECONDS / 1024" | bc)
echo "-------------------------------------"
echo "监控结束,持续时间:${DURATION_SECONDS} 秒"
echo "$INTERFACE 接收总流量: ${TOTAL_RX_MB} MB"
echo "$INTERFACE 发送总流量: ${TOTAL_TX_MB} MB"
echo "$INTERFACE 平均接收速率: ${AVG_RX_KBPS} KB/s"
echo "$INTERFACE 平均发送速率: ${AVG_TX_KBPS} KB/s"
echo "-------------------------------------"这个脚本非常灵活,我可以根据需要调整
INTERFACE
DURATION_SECONDS
选择合适的Linux带宽监控工具,对我来说,从来都不是一个“哪个最好”的问题,而是“哪个最适合我当前的需求”。我发现,理解不同工具的侧重点,能帮助我更快地定位问题。
iftop
nload
vnstat
sar
以上就是Linux怎么统计某段时间内的带宽使用的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号