必须提前部署vnstat才能查历史趋势,它不补录数据,仅从初始化数据库(sudo vnstat -u -i ens33)起开始记录小时/天/月流量;iftop和nload仅提供实时监控,/proc/net/dev仅含自启动累加的原始计数器。

直接看实时流量用 iftop 或 nload,查历史累计值用 /proc/net/dev,要回溯过去几小时/天的带宽趋势必须提前部署 vnstat——它不补录,只从安装那一刻起记。
iftop 看谁在连、用了多少带宽
它抓包显示每个 IP+端口对的实时吞吐,类似 top 之于 CPU,但默认会反向解析所有 IP 为域名。一旦 DNS 不通或慢,界面就卡在 Resolving,甚至假死。
- 必须加
-n:跳过 DNS 解析,避免卡顿和unknown host - 必须指定网卡:
sudo iftop -i ens33(先用ip -br a确认真实接口名) - 单位别混淆:
-B切到字节/s(默认是 bit/s),-P显示端口号而非服务名 - 过滤特定流量:
sudo iftop -n -i ens33 -f "port 80 or port 443"
nload 看入向/出向总吞吐趋势
它不抓包,直接读 /proc/net/dev,所以响应快、资源轻,适合一眼判断是否跑满或突发尖峰。但看不到连接细节,也不知道哪个进程在发包。
- 默认单位是 bit/s:
12.45表示 12.45 Mbit/s,不是 MB/s;加-u M强制显示为 MByte/s(注意 1 MB/s = 8 Mbit/s) - 多网卡切换:
nload -m同时列出所有接口,左右方向键切换视图 - 刷新间隔可调:
nload -t 2000设为 2 秒一次,避免刷屏太快 - 退出用
q,不是Ctrl+C
/proc/net/dev 查原始计数器,适合脚本或轻量监控
这是内核暴露的原始统计,每行对应一个网卡,字段如 rxbyt(接收字节数)、txbyt(发送字节数),数值从系统启动开始累加,重启即清零。
- 手动算实时速率:运行
watch -n 1 'cat /proc/net/dev',两次输出差值 ÷ 时间间隔 ≈ 当前 bps -
bytes字段才是真实吞吐依据,别误读packets或errs - 容器内也能读,但无法区分宿主机 vs 容器网络命名空间的流量
- 没有时间戳,不能直接看出“过去一小时用了多少”,只能靠外部工具定期采样
想查历史流量?现在装 vnstat 已经晚了
iftop、nload、/proc/net/dev 全都不存历史数据。你此刻执行 vnstat -d,看到的是从它第一次初始化数据库(vnstat -u -i ens33)之后才开始记录的天级汇总。
- 它不回溯:系统已运行三个月,今天才装
vnstat,那前三个月的数据永远缺失 - 数据库初始化必须手动触发:
sudo vnstat -u -i ens33,否则后续所有查询都报错 - 守护进程
vnstatd默认每 5 分钟采样一次,采样精度取决于这个间隔 - 如果需要小时级或更细粒度的历史,得确认
vnstatd正在运行且配置未被覆盖











