要查看服务器消耗了多少流量,可以使用多种方法,具体取决于你使用的操作系统(如 Linux)、服务器类型(云服务器、物理机等)以及你想要查看的粒度(实时流量、历史流量、按进程统计等)。以下是几种常用的方法:
一、Linux 系统下查看实时网络流量
1. 使用 iftop(实时监控网络接口流量)
sudo iftop
- 显示当前网络接口的实时流量,按连接排序。
- 安装方法(CentOS/RHEL):
sudo yum install iftop - 安装方法(Ubuntu/Debian):
sudo apt install iftop
2. 使用 nethogs(按进程查看流量)
sudo nethogs
- 可以看到每个进程消耗的上传/下载流量。
- 安装:
sudo apt install nethogs # Ubuntu/Debian sudo yum install nethogs # CentOS/RHEL
3. 使用 vnstat(查看历史流量统计)
vnstat
vnstat会记录每天、每月的网络流量使用情况。- 安装:
sudo apt install vnstat # Ubuntu/Debian sudo yum install vnstat # CentOS/RHEL - 常用命令:
vnstat # 查看汇总 vnstat -d # 按天查看 vnstat -m # 按月查看
4. 使用 ip 或 ifconfig 查看接口总流量
ip -s link show eth0
或
ifconfig eth0
- 查看
RX(接收)和TX(发送)的字节数,单位是字节。 - 可以定期记录这些值来计算一段时间内的流量消耗。
二、云服务器平台自带监控(推荐)
如果你使用的是云服务器(如阿里云、腾讯云、AWS、华为云等),可以直接在控制台查看流量:
1. 阿里云
- 登录 ECS 控制台
- 查看实例的“监控信息” → “公网带宽”图表
- 支持查看入方向(下载)、出方向(上传)流量
2. 腾讯云
- 登录 CVM 控制台
- 进入实例详情 → “监控” → 查看网络流入/流出带宽
3. AWS
- 使用 CloudWatch 查看
NetworkIn和NetworkOut指标
⚠️ 注意:云平台统计的“流量”通常指 公网流量,内网流量可能不计费也不显示。
三、脚本方式统计流量(进阶)
你可以写一个简单的脚本记录 /proc/net/dev 中的网卡流量:
cat /proc/net/dev
输出示例:
face |bytes packets...
eth0: 123456789 123456 ...
- 第二列是接收字节(RX),第十列是发送字节(TX)
- 可以通过定时脚本记录差值,计算一段时间内的流量。
示例脚本(统计 eth0 10 秒内的流量):
#!/bin/bash
read_rx_tx() {
cat /proc/net/dev | grep eth0 | awk '{print $2, $10}'
}
old=($(read_rx_tx))
sleep 10
new=($(read_rx_tx))
rx_diff=$(( ${new[0]} - ${old[0]} ))
tx_diff=$(( ${new[1]} - ${old[1]} ))
echo "接收流量: $(echo "scale=2; $rx_diff/1024/1024" | bc) MB"
echo "发送流量: $(echo "scale=2; $tx_diff/1024/1024" | bc) MB"
四、注意事项
- 区分内网和公网流量:很多应用(如数据库同步、内网服务)使用内网流量,不计入公网带宽消耗。
- 单位换算:
- 1 MB = 1024 KB = 1024×1024 字节
- 流量通常以 GB 或 TB 计费(如 1GB = 1000MB 或 1024MB,看服务商)
- 计费流量:云服务通常只对 出方向(上传)公网流量收费。
总结
| 方法 | 用途 |
|---|---|
iftop / nethogs |
实时查看流量,按连接或进程 |
vnstat |
查看历史每日/每月流量 |
ip -s link |
查看网卡累计流量 |
| 云平台监控 | 查看公网带宽使用和计费流量(最准确) |
? 建议:对于生产环境,推荐结合 vnstat 记录 + 云平台监控,实现全面流量管理。
如果你告诉我你用的是哪家云服务器或系统环境,我可以提供更具体的命令。
CDNK博客