最轻量查接口累计流量用cat /proc/net/dev,rx_bytes和tx_bytes为字节累计值;链路层错误看ip -s link show dev eth0;实时定位高带宽ip端口用iftop -n -p -n eth0;长期趋势分析用vnstat -u -i eth0初始化后查。

直接看接口累计流量:cat /proc/net/dev 最轻量
这是内核暴露的原始计数器,不依赖任何工具,适合写监控脚本或快速确认是否真有流量。字段顺序固定,rx_bytes 和 tx_bytes 是核心——单位是字节,需自己换算成 KB/MB。
- 执行
cat /proc/net/dev后,跳过第一行表头,第二行起每行对应一个接口;lo是回环,eth0或ens33才是物理网卡 - 数值是自系统启动以来的累计值,重启后归零;不能直接看出“此刻速率”,要靠两次采样差值计算
- 如果某接口
rx_bytes长期不增长,说明上层没收包(可能是防火墙拦截、服务未监听,或链路中断) - 注意字段对齐:不同内核版本列数可能微调,解析脚本建议用
awk '{print $2,$10}' /proc/net/dev | grep -v "lo"这类方式取第二列(rx_bytes)和第十列(tx_bytes)
查链路层错误和丢包:ip -s link show dev eth0
ip -s link 不显示 IP 地址,只管 MAC 层帧收发,但它能告诉你“包是不是真到了内核门口”。加 -h 参数让数字自动带单位(KiB/MiB),否则全是字节。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 重点看
RX下的errors:非零且持续上升,大概率是网线松动、交换机端口异常,或驱动兼容问题 -
TX下的dropped不是网络丢包,而是内核发送队列满时主动丢弃;若该值突增,先查宿主机负载或网桥队列(容器场景常见) -
carrier非零说明物理链路反复断连(比如网线接触不良),比errors更底层 - 别漏掉
dev eth0—— 不指定设备名会刷出所有接口(包括lo),干扰判断
实时看谁在用带宽:iftop -n -P -N eth0
要定位“哪个 IP + 端口组合正在吃带宽”,iftop 是最直接的。但默认行为容易误导:DNS 反解卡顿、端口被转成服务名(如 80→http)、误选 lo 接口。
- 必须加
-n(禁 DNS 解析)、-P(显端口号)、-N(不转服务名),否则界面卡死或显示unknown host - 用
-f "port 80 or port 443"可过滤 HTTP 流量,但语法是 libpcap 表达式,不支持域名或正则 - 顶部第二行的
TOTAL是当前总速率,单位默认 KB/s;按1键可按 TX 速率排序,快速揪出上传大户 - 如果所有连接都指向
127.0.0.1,检查是否误用了lo而不是物理网卡
长期跟踪趋势:vnstat -u -i eth0 初始化后查
vnstat 不实时抓包,而是定期读 /proc/net/dev 计数,所以开销极低,数据还能跨重启保留。但首次运行不初始化,所有统计都写进 lo 接口,彻底失效。
- 初始化命令必须带
-i eth0:执行sudo vnstat -u -i eth0,否则数据库建错位置 - 查今日流量用
vnstat -d,查小时级用vnstat -h(只存最近 24 小时),查月度用vnstat -m - 若系统时间大幅跳变(如 NTP 校时回拨),
vnstat会误判为新一天,日统计出现断层,只能手动vnstat --importdb修复 - 数据库文件固定在
/var/lib/vnstat/eth0,删错等于清空历史,备份只需拷走这个文件
/proc/net/dev 和 ip -s link 是验证“有没有流量”和“链路是否健康”的底线;iftop 解决“谁在用”的即时问题;vnstat 则负责回答“过去一周峰值在哪天”。三者数据来源不同,不能互相替代,也别指望单个命令覆盖全部需求。










