/proc/net/dev 是最底层、最权威的总流量统计来源,记录系统启动以来各网卡累计收发字节数和数据包数,适合做基础报表依据;vnstat 可生成日报/月报,ip -s link show 提供更易读的累计值,而 nload 等工具仅显示瞬时速率,不可用于统计总流量。

直接看 /proc/net/dev 是最底层、最权威的总流量统计来源。它记录的是系统启动以来每个网卡收发的**累计字节数和数据包数**,不依赖任何外部工具,也不受重启影响(只要系统没重装),适合做基础报表依据。
读取内核级累计流量(最稳)
运行命令:cat /proc/net/dev
输出中重点关注 bytes 列:
-
接收(rx):对应每行第二列(如
eth0:后第一个数字),单位是字节 - 发送(tx):对应每行第十列,也是字节
- 第一行是标题,第二行开始才是真实接口;
lo是回环口,通常忽略
想快速算出总收发字节数?可以用 awk 汇总:awk 'NR>2 {rx+=$2; tx+=$10} END {printf "Total RX: %.2f GB, TX: %.2f GB\n", rx/1024^3, tx/1024^3}' /proc/net/dev
用 vnstat 生成可读日报/月报
如果需要按天、按月自动汇总、带图表、重启不丢数据,vnstat 是唯一轻量靠谱的选择:
- 首次使用必须初始化:
sudo vnstat -u -i eth0(把eth0换成你实际主网卡名) - 查今日总量:
vnstat -d - 查当月汇总:
vnstat -m - 输出含“Received”和“Transmitted”两栏,单位默认为 GiB,清晰直观
它后台常驻运行,每5分钟采样一次,数据存在本地 SQLite 数据库里,完全不干扰业务。
用 ip 命令快速查看当前接口总流量
ip -s link show 也能读取累计收发字节数,比 /proc/net/dev 更易读:
- 找你关心的接口(如
eth0),看下面两段:
→ “RX: bytes” 和 “TX: bytes” 行里的第一个数字就是总字节数 - 支持缩写:
ip -s -h link show eth0 | grep -E "(RX:|TX:)"可精简输出
注意:这个命令显示的也是自系统启动以来的累计值,和 /proc/net/dev 本质一致,只是格式更友好。
避免误区:别用实时工具凑“总流量”
nload、iftop、nethogs 这些都是看**瞬时速率**或**当前连接**的,它们不保存历史,无法直接导出“总流量报表”。强行用它们反复采样再累加,既不准又麻烦——内核自己早就算好了,直接取就行。


















