首页 > 运维 > linux运维 > 正文

Linux怎么统计某段时间内的带宽使用

P粉602998670
发布: 2025-09-16 08:24:01
原创
593人浏览过
答案是根据需求选择合适工具:长期趋势用vnstat,历史详细记录用sar,精确自定义统计则通过读取/proc/net/dev编写脚本实现,不同场景需分层处理以获得最佳效果。

linux怎么统计某段时间内的带宽使用

在Linux上统计某段时间内的带宽使用,核心思路是利用系统提供的工具或接口,在时间段的起点和终点获取网络流量数据,然后计算差值。常用的方法包括使用

vnstat
登录后复制
进行长期数据收集,或者利用
sar
登录后复制
命令查询历史记录,更精细的自定义统计则可以借助读取
/proc/net/dev
登录后复制
文件来实现。

当我在Linux系统上需要了解某个特定时间段的带宽使用情况时,我通常会根据需求选择不同的工具。这不是一个“一招鲜吃遍天”的问题,因为实时监控、长期趋势分析和精确到秒级的自定义统计,它们各自有最适合的解决方案。

解决方案

对我而言,最直接且有效的策略是分层处理:

1. 长期趋势与聚合数据:

vnstat
登录后复制
如果我需要的是每日、每月或每小时的聚合流量数据,并且希望这些数据能够持久化,那么
vnstat
登录后复制
几乎是我的首选。它作为一个轻量级的守护进程,默默地在后台收集数据。

安装通常很简单:

  • Debian/Ubuntu:
    sudo apt install vnstat
    登录后复制
  • CentOS/RHEL:
    sudo yum install vnstat
    登录后复制

安装后,确保它正在运行并监控你的网络接口(例如

eth0
登录后复制
):
sudo vnstat --create -i eth0
登录后复制
sudo systemctl enable vnstat && sudo systemctl start vnstat
登录后复制

一旦

vnstat
登录后复制
运行了一段时间,你就可以查询特定时间段的数据了。

  • 查看今天和昨天的日流量:
    vnstat -d
    登录后复制
  • 查看本月和上个月的月流量:
    vnstat -m
    登录后复制
  • 查看过去24小时的每小时流量:
    vnstat -h
    登录后复制

通过这些命令,我可以快速了解到某个特定日期或时间段的大致流量消耗。比如,我发现某天晚上网络特别慢,我就可以用

vnstat -h
登录后复制
看看那个小时的流量是不是异常高。

美间AI
美间AI

美间AI:让设计更简单

美间AI45
查看详情 美间AI

2. 历史详细记录与特定时间段查询:

sar
登录后复制
(System Activity Reporter)
sar
登录后复制
sysstat
登录后复制
工具包的一部分,它能记录非常详细的系统活动数据,包括网络接口的吞吐量。它的强大之处在于能够查询过去任意有记录的时间段。

sar
登录后复制
默认会把数据记录在
/var/log/sa/
登录后复制
目录下,文件名通常是
saXX
登录后复制
,其中
XX
登录后复制
是日期。 要查询今天上午9点到10点之间
eth0
登录后复制
接口的接收(rxkB/s)和发送(txkB/s)速率:
sar -n DEV -s 09:00:00 -e 10:00:00 -i 300
登录后复制
这里的
-n DEV
登录后复制
指定查看网络设备统计,
-s
登录后复制
-e
登录后复制
定义了时间段,
-i 300
登录后复制
表示每5分钟刷新一次,但对于历史数据查询,它会根据已有的日志记录来展示。

如果我想看昨天的同一时间段,就需要指定昨天的日志文件:

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带宽监控工具?

选择合适的Linux带宽监控工具,对我来说,从来都不是一个“哪个最好”的问题,而是“哪个最适合我当前的需求”。我发现,理解不同工具的侧重点,能帮助我更快地定位问题。

  • 你需要实时性还是历史数据?
    • 如果你只是想快速看一眼当前哪个进程或IP在消耗大量带宽,那么
      iftop
      登录后复制
      nload
      登录后复制
      这类实时工具是首选。它们提供即时、可视化的反馈,但一旦关闭,数据就消失了。
    • 如果你的目标是分析过去一小时、一天甚至一个月的趋势,或者需要追溯某个历史时刻的网络状况,那么
      vnstat
      登录后复制
      sar
      登录后复制
      或更高级的监控系统(如Prometheus结合Grafana)就显得

以上就是Linux怎么统计某段时间内的带宽使用的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号