直接看实时流量用iftop需加-n关闭dns解析并指定网卡如eth0;查进程带宽用nethogs;图形化趋势用nload;历史流量必须提前部署vnstat并初始化数据库,否则无法回溯。

直接看实时流量用 iftop,但别裸跑
默认执行 sudo iftop 会尝试反向解析所有 IP 为域名,不仅慢,还可能卡住界面或触发 DNS 查询失败。必须加 -n 关闭解析:sudo iftop -n。如果只关心某块网卡(比如 eth0 或 ens33),一定要指定:sudo iftop -n -i eth0。不指定接口时,iftop 可能监听错设备(尤其是多网卡服务器),导致看到的流量和预期不符。
按进程查谁在吃带宽,用 nethogs
iftop 显示的是 IP+端口对,但你没法直接知道是哪个进程在发包。nethogs 才是干这事的:它按进程聚合流量,输出里直接带 PID 和命令名。安装后运行 sudo nethogs eth0 即可。注意两点:它默认只显示活跃连接,静默进程(比如刚启动还没发包的)不会出现;它依赖 libpcap,某些容器环境或最小化系统可能缺依赖,报错 Unable to create a socket 就得先装 libpcap-dev 或对应包。
想看图形化趋势又不想装 GUI,nload 最省事
nload 不显示连接细节,只画两条实时曲线(入 + 出),附带当前/最小/最大速率和总流量。适合快速扫一眼是否跑满、有没有突发尖峰。运行 sudo nload 默认监控第一个非 loopback 接口;要指定,用 sudo nload eth0。它的刻度单位固定为 kbit/s 或 Mbit/s,不会自动切 Byte,所以看到 “12.45” 是 12.45 Mbit/s,不是 MB/s——这点容易误读,尤其对比 iftop -B 的输出时。
历史流量不能靠实时工具,得用 vnstat 记录
iftop、nethogs、nload 全都不存历史数据。想查“昨天下午三点到四点 eth0 流了多少”,必须提前部署 vnstat。它后台常驻,每 5 分钟采样一次 /proc/net/dev,重启也不丢数据。初始化要先运行 sudo vnstat -u -i eth0 创建数据库,再启服务:sudo systemctl enable vnstat && sudo systemctl start vnstat。之后查当天:vnstat -d;查小时级:vnstat -h。没提前装,此刻就看不到过去的数据——这点最容易被忽略,等出问题才想起来装,已经晚了。











