在 Linux 运维与网络调试工作中,实时监控网卡流量属于高频需求场景。无论是排查网络瓶颈、分析突发流量,还是执行日常巡检,掌握几款趁手的工具往往能事半功倍。下面整理了六种备受运维人员青睐的监控方式,从轻量级的命令行工具到功能更全面的交互式界面,覆盖了大部分实际应用场景。每一种工具都有其独特的使用技巧,熟悉它们之后,面对各类网络问题时会更加从容。
方法一、nload 工具
nload 是一款简洁易用的实时流量监控工具,它借助 ASCII 图形直观展示入站和出站流量的变化趋势。安装完成后,直接在终端输入 nload 即可查看所有网卡的流量动态。如果只想关注某个特定接口(例如 eth0),可以指定设备名:nload eth0。
它的参数虽然不多,但每个都很实用:
- -a:全部数据的刷新周期,单位为秒,默认值为 300 秒。如果需要更短的统计周期,可以适当调小此值。
- -i:设置入站流量图的显示比例最大值,默认 10240 kBit/s。当实际流量超出此阈值时,图形会显示满格,但数值依然准确。
- -m:不显示流量图,仅显示统计数字。适合只关注数值而非图形的场景。
- -o:出站流量图的显示比例最大值,参数含义与
-i对称。 - -t:数据显示的刷新间隔,单位为毫秒,默认 500。适当调小可使数字更新更灵敏。
- -u:设定右侧 Curr、Avg、Min、Max 四列的数据单位。注意大小写含义不同:
h|b|k|m|g分别代表 auto、Bit/s、kBit/s、MBit/s 等(小写表示位速率)。
H|B|K|M|G分别代表 auto、Byte/s、kByte/s、MByte/s 等(大写表示字节速率)。 - -U:设定右侧 Ttl 列的数据单位,规则与
-u相同。 - Devices:默认监控所有网卡,可通过左右方向键切换不同网卡界面。若只想监控一个网卡,启动时直接指定设备名即可,例如
nload eth0。
查看完整帮助可使用 nload --help。源码包可在 SourceForge 获取。
方法二、iftop 工具
iftop 可以被理解为网络流量版的 top 命令,它按连接(IP+端口)实时显示流量,并提供动态排序功能,非常适合定位哪些主机或端口正在占用带宽。
iftop 界面说明
界面顶部有一排类似刻度尺的横条,那是流量长条的标尺。中间的 <= => 左右箭头表示流量的方向。
统计区域包含:
- TX:发送流量
- RX:接收流量
- TOTAL:总流量
- Cumm:从启动 iftop 到现在的累计总流量
- peak:流量峰值
- rates:分别显示过去 2 秒、10 秒、40 秒的平均流量
常用参数
- -i:指定监听的网卡,例如
iftop -i eth1 - -B:以字节(bytes)为单位显示流量,默认为比特(bits)
- -n:直接显示 IP 地址,不解析主机名,可减少一些延迟
- -N:直接显示端口号,不显示服务名称
- -F:只显示特定网段的进出流量,如
iftop -F 10.10.1.0/24或iftop -F 10.10.1.0/255.255.255.0 - -p:让中间的列表显示本地主机信息之外的其他 IP
- -b:让流量图形条默认就显示(而非需要按快捷键才显示)
- -P:默认显示主机信息和端口信息
- -m:设置界面顶部刻度的最大值,例如
iftop -m 100M - -h:显示帮助信息
进入界面后的交互操作(大小写敏感)
- h:切换是否显示帮助
- n:切换显示本机的 IP 或主机名
- s:切换是否显示本机的 host 信息
- d:切换是否显示远端目标主机的 host 信息
- t:切换显示格式:2 行 / 1 行 / 只显示发送流量 / 只显示接收流量
- N:切换显示端口号或端口服务名称
- S:切换是否显示本机的端口信息
- D:切换是否显示远端目标主机的端口信息
- p:切换是否显示端口信息
- P:暂停 / 继续显示
- b:切换是否显示平均流量图形条
- B:切换计算 2 秒、10 秒还是 40 秒内的平均流量
- T:切换是否显示每个连接的总流量
- l:打开屏幕过滤功能,输入要过滤的字符(比如 IP 地址),回车后只显示匹配的连接
- L:切换显示画面上部的刻度,刻度不同时,流量图形条会随之变化
- j / k:向上或向下滚动屏幕
- 1 / 2 / 3:根据右侧三列流量数据排序(分别对应不同时间段的平均流量)
- <:根据左边的本机名或 IP 排序
- >:根据远端目标主机名或 IP 排序
- o:切换是否固定只显示当前的连接
- f:编辑过滤代码(类似于
tcpdump的表达式) - !:执行 Shell 命令(可结合其他工具做自动化操作)
- q:退出监控
源码包地址:https://www.ex-parrot.com/~pdw/iftop/download/iftop-0.17.tar.gz
方法三、ifstat
ifstat 是一款更轻量的统计工具,它不像 nload 或 iftop 那样提供图形界面,而是单纯以数字形式呈现各网卡的流量数据,非常适合用于脚本化或远程监控场景。
- -a:监测所有检测到的网络接口状态
- -z:隐藏流量为 0 的接口(例如已启动但未使用的接口)
- -i:指定要监测的接口,后面跟接口名
- -T:报告所有监测接口的总带宽
- -w:指定列宽,默认会根据接口名称长度自动调整
- -W:如果内容比终端宽度还宽,则自动换行
- -b:以 kbits/s 显示带宽,而不是默认的 kbytes/s
源码包路径:https://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz
方法四、iptraf
iptraf 是一款基于 ncurses 开发、功能更全面的交互式 IP 局域网监控工具。它不仅能查看网卡流量,还能统计 TCP、UDP、ICMP、OSPF 等协议信息,甚至可以分析以太网负载和节点统计。安装方式非常简便:yum -y install iptraf。
以下为其常用参数列表:
| 参数命令 | 作用 |
|---|---|
| -i iface | 立即在指定网络接口上开启 IP 流量监视;iface=all 表示监视所有接口 |
| -g | 立即生成网络接口的概要状态信息 |
| -d iface | 在指定接口上立即开始监视详细流量信息 |
| -s iface | 在指定接口上立即开始监视 TCP 和 UDP 流量信息 |
| -z iface | 在指定接口上显示包计数 |
| -l iface | 在指定接口上立即开始监视局域网工作站信息 |
| -t timeout | 指定 iptraf 监视的时间(分钟) |
| -B | 将标准输出重定向到 /dev/null,关闭标准输入,作为后台守护进程运行 |
| -L logfile | 指定日志文件路径,默认是 /var/log/iptraf |
| -I interval | 指定记录日志的时间间隔(分钟),不包括 IP traffic monitor |
| -u | 允许使用不支持的接口作为以太网设备 |
| -f | 清空所有计数器 |
| -h | 显示帮助信息 |
方法五、watch ifconfig
watch 命令本身并不监控流量,但它可以每隔固定时间重复执行一条命令,并将结果全屏显示。将 ifconfig 与 watch 结合,就能实现最简单的流量刷新效果。
watch ifconfig:每 2 秒刷新一次网络接口状态watch -d ifconfig:每 2 秒刷新,并高亮标记发生变化的部分(差异高亮)watch -d ifconfig eth0:只监控 eth0watch -d 'ifconfig eth0 | grep bytes':仅显示流量(Bytes)那两行,变化部分高亮显示
watch 也可用于监控文件变化,例如 watch ls -la file 可以每 2 秒查看文件大小变化。退出时使用 Ctrl+C。
watch 命令详解
watch 的基本语法:watch [-dhvt] [-n
- -d 或 --differences:高亮显示每次刷新时发生变化的部分。加上
--cumulative会使高亮“粘滞”,保留之前所有变化过的位置。 - -t 或 --no-title:取消顶部的标题行(显示时间、命令等)。
- -n 或 --interval:指定刷新间隔,单位为秒,默认 2 秒。
注意事项:watch 执行的命令实际上是传给 sh -c 去解析的,因此如果命令中包含管道或特殊字符,建议用引号包裹。此外,POSIX 选项处理方式要求在第一个非选项参数之后,所有参数都视为命令的一部分。
常用示例:
watch -n 60 from:每 60 秒查看一次邮件(虽然有些过时,但仍是经典用法)watch -d ls -l:每秒查看目录内容的变化watch -d 'ls -l | fgrep joe':过滤只显示 joe 用户的文件watch uname -r:实时查看内核版本(常用于测试或趣味场景)
已知问题:当终端大小发生变化时,屏幕需要等到下一次更新才能正确重绘,同时高亮标记也会丢失。如果命令输出包含非打印字符,watch 会自动将其剥离,此时可以使用 cat -v 手动查看原始输出。
方法六、watch cat /proc/net/dev
如果希望查看最原始、最底层的网络流量数据,可以直接读取 /proc/net/dev 文件。这个伪文件记录了每个网卡的收发字节数、包数、错误数等统计信息。配合 watch 即可实现实时监控:
watch -d cat /proc/net/dev
这种方法无需安装任何第三方工具,完全依赖内核提供的统计接口,特别适合在最小化系统或容器内使用。如果只需要简单的流量增量,还可以结合 diff 或自行编写脚本,实现更细致的二次计算。
