linux下实时监控网卡流量有五种方法:一、iftop按连接显示实时带宽;二、sar查看历史与实时网络统计;三、ip -s link读取累计流量计数器;四、nethogs按进程维度监控;五、/proc/net/dev解析原始流量数据。

如果您需要在 Linux 系统中实时监控网卡的流入与流出流量,以评估当前网络带宽使用情况,则可通过命令行工具直接获取精确的每秒字节数、包数及速率信息。以下是几种常用且无需额外安装即可使用的监控方法:
一、使用 iftop 实时查看网卡流量
iftop 是一个基于 ncurses 的终端界面工具,可按连接维度实时显示每个 TCP/UDP 连接的带宽占用,支持排序与过滤,适用于快速定位高流量进程或远程 IP。
1、检查系统是否已安装 iftop:sudo apt list --installed | grep iftop(Debian/Ubuntu)或 rpm -q iftop(RHEL/CentOS)。
2、若未安装,执行:sudo apt install iftop(Debian/Ubuntu)或 sudo yum install iftop(RHEL/CentOS 7)或 sudo dnf install iftop(RHEL/CentOS 8+)。
3、运行 iftop 并指定网卡:例如监控 eth0,输入 sudo iftop -P -f "port 80 or port 443" 可仅显示 HTTP/HTTPS 流量。
4、在 iftop 界面中按 P 切换端口显示,按 T 切换连接汇总模式,按 q 退出。
二、使用 sar 查看历史与实时网络统计
sar 是 sysstat 套件中的核心工具,可采集并报告网络接口的累计与瞬时流量数据,支持按秒轮询和日志持久化,适合周期性采样分析。
1、确认 sysstat 已启用数据收集:检查 /etc/default/sysstat 中 ENABLED="true" 是否生效。
2、启动 sysstat 服务:sudo systemctl enable sysstat && sudo systemctl start sysstat。
3、立即获取最近 1 秒的实时网卡流量(如 ens33):sar -n DEV 1 1 | grep ens33,输出中 rxkB/s 和 txkB/s 分别表示接收与发送速率(KB/秒)。
4、查看当日历史记录(需 sysstat 日志已生成):sar -n DEV -f /var/log/sysstat/sa$(date +%d)。
三、使用 ip -s link 查看累计流量计数器
ip 命令的 -s link 选项可读取内核维护的底层链路层统计,返回自接口启用以来的总收发字节数、包数、错误数等,无实时刷新能力但零依赖、高可靠性。
1、列出所有接口统计:ip -s link show。
2、聚焦特定网卡(如 enp0s3):ip -s link show enp0s3 | sed -n '1,2p; /RX:/, /TX:/p',提取关键字段。
3、计算差值估算短时速率:两次执行间隔 2 秒,分别记录 RX 字节数,用 (bytes2 - bytes1) / 2 得到平均 B/s 值。
四、使用 nethogs 按进程维度监控带宽
nethogs 按进程(PID)聚合网络流量,可直观识别哪个程序正在消耗最多带宽,特别适用于排查后台服务异常外连或下载任务。
1、安装 nethogs:sudo apt install nethogs(Debian/Ubuntu)或 sudo yum install nethogs(RHEL/CentOS)。
2、以 root 权限运行并绑定至指定网卡:sudo nethogs -d 2 -t ens33,其中 -d 2 表示每 2 秒刷新一次,-t 启用简洁文本模式。
3、界面中各列含义为:PID、USER、PROGRAM、DEV、SENT、RECEIVED;按 m 切换速率单位(KB/s → MB/s),按 q 退出。
五、使用 /proc/net/dev 解析原始流量数据
/proc/net/dev 是内核暴露的虚拟文件,包含所有活动网卡的底层收发字节与包计数,格式稳定、开销极低,适合脚本化轮询与告警集成。
1、查看当前快照:cat /proc/net/dev,跳过前两行列头,每行格式为:interface: rx_bytes rx_packets ... tx_bytes tx_packets ...。
2、提取 eth0 的收发字节数:awk '/eth0:/ {print "RX:", $2, "TX:", $10}' /proc/net/dev。
3、编写简易速率脚本:连续两次读取间隔 1 秒,用 bc 计算差值并转换为 Mbps:(tx2 - tx1) * 8 / 1000000。











