Linux 系统中的网络流量通过网络接口进出,列如常见的 eth0(以太网接口)或 wlan0(无线接口)。

想知道你的系统有哪些接口?试试下面这两个命令:
ip link show
这个命令会列出所有网络接口的状态,列如是否启用(UP)。输出可能长这样:

ifconfig -a
如果你的系统安装了 net-tools,这个命令会显示更详细的信息,包括 IP 地址和基本流量统计:

这些接口是你监控流量的“入口”和“出口”,记住它们的名称(如 eth0),后续操作会用到。
Linux 内核默默地为每个网络接口记录着流量数据,这些信息藏在 /proc/net/dev 文件中。运行以下命令查看:
cat /proc/net/dev
输出示例:

这里展示了接收(Receive)和发送(Transmit)的字节数和数据包数。虽然这个文件提供的是静态快照,但它是你理解流量基础的起点。
有了基础知识,我们进入正题:如何用命令行工具实时监控网络流量?以下是七款神器,每一款都有独特的魅力和适用场景。
iftop 就像一个实时“流量雷达”,能显示每个连接的源 IP、目标 IP 和流量速率,特别适合排查谁在占用带宽。
sudo apt-get install iftop # Debian/Ubuntu
sudo yum install iftop # CentOS/RHEL

sudo iftop

默认监控第一个活动接口,界面一目了然:
sudo iftop -i eth0

sudo iftop -i eth0 -f "port 80"

场景: 当你怀疑某个应用偷偷上传数据,用 iftop 能迅速锁定“嫌疑人”。
nload 以直观的图表展示流量速率,适合快速查看接口的总体使用情况。
sudo apt-get install nload
sudo yum install nload

nload

显示所有接口的实时流量,图表清晰可见。
nload eth0

场景: 想快速了解带宽是否超载?nload 是你的最佳助手。
vnstat 不仅能实时监控,还能记录历史数据,适合需要统计分析的场景。
sudo apt-get install vnstat
sudo yum install vnstat

sudo systemctl start vnstat
sudo systemctl enable vnstat

vnstat -i eth0
显示日、月、总流量统计。
vnstat -l -i eth0
每秒更新流量速率。
场景: 需要长期追踪带宽使用趋势时,vnstat 是理想选择。
bmon 提供多种显示模式,既能看总体流量,也能深入细节。
sudo apt-get install bmon
sudo yum install bmon
bmon

bmon -p eth0


场景: 想要个性化监控体验?bmon 的灵活性不会让你失望。
iptraf 提供交互式界面,能按协议、连接等分类展示流量。
sudo apt-get install iptraf
sudo yum install iptraf

iptraf-ng

进入菜单,选择“IP traffic monitor”,挑选接口开始监控。


场景: 需要深入分析流量类型时,iptraf 是你的得力助手。
tcpdump 是一个抓包神器,虽然不是专为流量监控设计,但通过分析数据包能间接了解流量。
sudo apt-get install tcpdump
sudo yum install tcpdump

sudo tcpdump -i eth0

sudo tcpdump -i eth0 port 80

sudo tcpdump -i eth0 -w capture.pcap

结合管道工具:
sudo tcpdump -i eth0 | grep "80"

场景: 想深入研究数据包内容?tcpdump 是必备工具。
sar(System Activity Reporter)来自 sysstat 包,能监控网络流量和其他系统指标。
sudo apt-get install sysstat
sudo yum install sysstat

sar -n DEV 1

每秒显示接口流量。
sar -n DEV -f /var/log/sysstat/sa$(date +%d)
场景: 需要同时监控流量和系统性能时,sar 是全能选手。