要查看服务器的流入(Inbound)和流出(Outbound)带宽使用情况,有多种方法,适用于不同场景(实时监控、历史分析、命令行/图形界面等)。以下是常用且实用的方式,按推荐顺序排列:
✅ 1. 使用 iftop(实时、按连接/进程查看,最直观)
类似于
top,但显示网络流量(需 root 权限查看端口/进程)
# 安装(Ubuntu/Debian)
sudo apt install iftop
# CentOS/RHEL/Fedora
sudo yum install iftop # 或 dnf install iftop
# 运行(默认监控 eth0,可指定网卡如 -i ens33)
sudo iftop
- 关键信息:
- 左侧:远程 IP:端口
- 右侧:本地 IP:端口
TX列 → 流出(上传)带宽(本机发往外部)RX列 → 流入(下载)带宽(外部发往本机)- 底部三行:2s/10s/40s 平均速率(含总和)
💡 提示:按 P 切换端口解析,T 汇总连接,L 显示过滤器,q 退出。
✅ 2. 使用 nethogs(按进程统计,精准定位“谁在吃带宽”)
按进程(PID/程序名)分组显示实时上下行流量
# 安装
sudo apt install nethogs # Debian/Ubuntu
sudo yum install nethogs # RHEL/CentOS
# 运行(需 root)
sudo nethogs eth0
- 清晰显示每个进程的:
sent→ 流出(上传)速率received→ 流入(下载)速率
- 支持按
m切换速率单位(KB/s, MB/s),r排序,q退出。
✅ 3. 使用 ip -s link 或 /proc/net/dev(基础、无依赖、适合脚本)
查看网卡累计字节数(需两次采样计算速率)
# 查看所有网卡收发字节数(单位:bytes)
cat /proc/net/dev
# 或使用 ip 命令(更清晰)
ip -s link show eth0 | grep -A 3 "RX|TX"
输出示例:
RX: bytes packets errors dropped ...
123456789 123456 0 0
TX: bytes packets errors dropped ...
987654321 654321 0 0
RX bytes→ 总流入字节数TX bytes→ 总流出字节数
📌 计算实时速率(如每秒):
# 间隔1秒采样两次,计算差值 ÷ 1024 ÷ 1024 ≈ MB/s
watch -n1 'awk -F"[: ]+" "/eth0/{rx1=$2; tx1=$10} /eth0/{rx2=$2; tx2=$10; printf "RX: %.2f MB/s | TX: %.2f MB/s\n", (rx2-rx1)/1024/1024, (tx2-tx1)/1024/1024; exit}' /proc/net/dev
(或用 sar -n DEV 1,见下文)
✅ 4. 使用 sar(系统性能工具,支持历史 & 实时,推荐长期监控)
来自
sysstat包,可记录历史流量(需启用日志)
# 安装
sudo apt install sysstat # Ubuntu/Debian
sudo yum install sysstat # RHEL/CentOS
# 实时查看(每1秒刷新,持续5次)
sar -n DEV 1 5
# 输出关键列:
# iface rxkB/s txkB/s rxpck/s txpck/s ...
# eth0 123.45 67.89 ... ... ← 单位 kB/s(即流入/流出速率)
✅ 优势:可配合 sadf 查看历史数据(如 sar -n DEV -f /var/log/sysstat/saXX)
✅ 5. 图形化方案(适合运维平台或桌面环境)
- NetData(轻量实时仪表盘):
bash <(curl -Ss https://my-netdata.io/kickstart.sh) # 访问 http://服务器IP:19999 → 网络 → Interfaces 查看各网卡实时 RX/TX 曲线 - Prometheus + Grafana + node_exporter:适合集群级长期监控与告警。
- Cacti / Zabbix:传统企业级网络监控平台。
🚫 注意事项 & 常见误区
| 项目 | 说明 |
|---|---|
| 流入 vs 流出方向 | 对服务器而言: • 流入(RX/Inbound) = 外部请求到达服务器(如 HTTP 请求、SSH 连接)→ 服务器接收的数据 • 流出(TX/Outbound) = 服务器响应返回给客户端(如网页内容、SSH 回复)→ 服务器发送的数据 |
| 单位换算 | 1 MB/s = 1024 KB/s ≈ 8.192 Mbps(注意区分 MB/s 和 Mbps) |
| 容器/虚拟机 | 若用 Docker/K8s,需监控 docker0、cni0 或 Pod 网络接口;nethogs -p 可看到容器内进程。 |
| 云服务器(如 AWS/Aliyun) | 控制台自带监控(如 EC2 的 NetworkIn/NetworkOut 指标),更准确(底层采集,不受 host 工具干扰)。 |
✅ 快速诊断命令汇总(复制即用)
# ① 实时看哪个进程在传数据(推荐首选)
sudo nethogs eth0
# ② 实时看哪个IP/端口在通信
sudo iftop -P
# ③ 每秒查看网卡速率(kB/s)
sar -n DEV 1
# ④ 查看当前总流量(字节)
cat /proc/net/dev | awk '/eth0/{print "RX:", $2/1024/1024"M TX:", $10/1024/1024"M"}'
需要我帮你:
- ✅ 写一个自动计算并告警高带宽使用的 Bash 脚本?
- ✅ 配置
netdata或prometheus监控? - ✅ 分析某次流量突增的原因(如 DDoS、备份任务)?
欢迎随时补充你的系统环境(Linux 发行版、是否容器化、是否云服务器等),我可以给出定制化方案 👇
ECLOUD博客