在 Linux 服务器上,有多种命令可以查看网络流量使用情况,适用于不同粒度(整体、接口级、进程级、实时/历史)和场景(调试、监控、排障)。以下是常用且实用的命令分类整理:
✅ 一、按网络接口查看实时/累计流量(最常用)
-
ip -s link(推荐,现代标准)ip -s link show eth0 # 查看 eth0 的收发字节数、包数、错误等(累计值) watch -n 1 'ip -s link show eth0 | grep "bytes|packets"' # 每秒刷新,观察变化✅ 优点:内核原生、轻量、无依赖;显示 RX/TX 字节、包数、丢包、错误等。
-
cat /proc/net/dev(底层可靠)cat /proc/net/dev # 或格式化查看(去除头尾,只留关键列): awk '{if(NR>2) print $1, $2, $10}' /proc/net/dev | column -t✅ 输出字段:
iface: rx_bytes tx_bytes ... rx_packets tx_packets;适合脚本解析。 -
ifconfig(传统,部分系统已弃用但仍广泛可用)ifconfig eth0 | grep "RX bytes|TX bytes" # 注意:需 `net-tools` 包(如 `sudo apt install net-tools`)
✅ 二、实时流量监控(动态刷新,类 top 界面)
-
iftop(按连接/主机排序,类似 top)sudo iftop # 默认监控 eth0,按流量排序 sudo iftop -P # 显示端口 sudo iftop -f "port 80" # 过滤 HTTP 流量⚠️ 需安装:
sudo apt install iftop(Debian/Ubuntu)或sudo yum install iftop(RHEL/CentOS) -
nethogs(按进程/用户分组,精准定位“谁在吃带宽”)sudo nethogs eth0 # 按进程实时显示带宽占用(KB/s) sudo nethogs -p # 显示 PID✅ 强烈推荐用于排查异常进程(如X_X、备份、下载任务)。
⚠️ 安装:sudo apt install nethogs(支持libpcap) -
bmon(图形化终端界面,支持多接口、历史趋势)sudo bmon -p eth0 # 简洁界面,支持颜色、图表、导出⚠️ 安装:
sudo apt install bmon -
vnstat(轻量级 历史 流量统计,需后台守护进程)sudo apt install vnstat sudo vnstat -u -i eth0 # 初始化数据库 sudo systemctl enable vnstat && sudo systemctl start vnstat vnstat -l # 实时速率(last 10s) vnstat -h # 小时级统计 vnstat -d # 日统计 vnstat -m # 月统计✅ 优势:不依赖抓包,低开销,断电不丢数据(基于
/proc/net/dev定期采样)。
✅ 三、高级/诊断用途
-
ss+awk组合(快速查看活跃连接及流量估算)ss -ti | head -20 # 显示 TCP 连接的 `bytes_acked`, `bytes_received`(需内核支持) -
tcpdump+wireshark/tshark(深度抓包分析)sudo tcpdump -i eth0 -w traffic.pcap port 80 & # 抓包保存 tshark -r traffic.pcap -qz io,stat,10 # 每10秒统计流量⚠️ 仅限临时诊断,避免长期运行(性能开销大)。
-
sar(来自sysstat,综合系统监控)sudo apt install sysstat sudo systemctl enable sysstat && sudo systemctl start sysstat sar -n DEV 1 5 # 每秒采样,共5次(显示各接口流量 KB/s) sar -n EDEV 1 5 # 查看错误统计
✅ 四、快速检查技巧(运维小贴士)
-
🔍 查最高流量进程(无需安装):
sudo lsof -i -P -n | grep ESTABLISHED | awk '{print $1,$9}' | sort | uniq -c | sort -nr | head -10 -
📈 简单实时速率计算(每2秒差值):
old=$(cat /proc/net/dev | awk '/eth0/{print $2,$10}'); sleep 2; new=$(cat /proc/net/dev | awk '/eth0/{print $2,$10}'); echo "$new - $old" | awk '{printf "RX: %.2f KB/s, TX: %.2f KB/sn", ($1-$3)/2048, ($2-$4)/2048}'
| 📌 选择建议: | 场景 | 推荐命令 |
|---|---|---|
| ✅ 快速看网卡总流量(累计) | ip -s link 或 cat /proc/net/dev |
|
| ✅ 实时看哪个 IP/端口占流量 | iftop -P |
|
| ✅ 查哪个进程在疯狂发包 | nethogs(首选!) |
|
| ✅ 长期监控+月度报表 | vnstat(配置一次,永久受益) |
|
| ✅ 生产环境轻量监控 | sar -n DEV(配合 cron 日志) |
需要我为你写一个一键流量监控脚本(含接口、TOP5进程、速率曲线)或解释某个命令的输出字段含义?欢迎继续提问 😊
云小栈