ifstat是Linux下轻量实时网络流量监控工具,支持多网卡采集、定时日志记录(如每5秒)、systemd后台管理及CSV导出分析,单位默认为KB/s。

在Linux中,ifstat 是一个轻量、实时的网络接口流量监控工具,适合快速查看多网卡的收发速率。它本身不直接支持长期日志记录,但可通过 Shell 组合命令实现“定时采集 + 多网卡统计 + 日志落盘”的完整流程。
确认 ifstat 已安装并支持多网卡
多数发行版需手动安装:
Ubuntu/Debian:sudo apt install ifstat
CentOS/RHEL:sudo yum install ifstat 或 sudo dnf install ifstat
运行 ifstat -a 可列出所有活跃网卡(如 eth0、ens33、docker0、lo 等)。若只显示部分接口,可加 -i 显式指定,例如:ifstat -i eth0 -i ens33 -i docker0
按固定间隔采集多网卡流量并追加到日志文件
使用 while 循环 + date 时间戳 + ifstat 输出,是最常用且稳定的方式:
- 每5秒采集一次,输出含时间、各网卡 RX/TX(KB/s),追加到
/var/log/ifstat.log - 命令示例(建议写入脚本,如
/usr/local/bin/monitor-ifstat.sh):
#!/bin/bash<br>
LOGFILE="/var/log/ifstat.log"<br>
INTERVAL=5<br>
INTERFACE_LIST="eth0 ens33 docker0"<br><br>
echo "$(date '+%Y-%m-%d %H:%M:%S') - START" >> "$LOGFILE"<br>
while true; do<br>
echo "$(date '+%Y-%m-%d %H:%M:%S')" >> "$LOGFILE"<br>
ifstat -i $INTERFACE_LIST -n 1 1 | tail -n +3 | awk '{print \" \" $0}' >> "$LOGFILE"<br>
sleep $INTERVAL<br>
done说明:
– tail -n +3 跳过 ifstat 的表头和空行;
– awk '{print " " $0}' 缩进便于日志阅读;
– -n 1 1 表示“不打印头部、仅采集1次、每次1秒”,确保单次输出稳定。
后台运行与开机自启(推荐 systemd 方式)
避免使用 & 或 nohup 简单后台化,更可靠的是用 systemd 服务管理:
- 创建服务文件:
/etc/systemd/system/ifstat-monitor.service - 内容示例:
[Unit]<br> Description=Multi-interface network traffic monitor via ifstat<br> After=network.target<br><br>[Service]<br> Type=simple<br> User=root<br> ExecStart=/usr/local/bin/monitor-ifstat.sh<br> Restart=always<br> RestartSec=10<br> StandardOutput=append:/var/log/ifstat.log<br> StandardError=append:/var/log/ifstat.log<br><br>[Install]<br> WantedBy=multi-user.target
启用服务:sudo systemctl daemon-reloadsudo systemctl enable --now ifstat-monitor.service
日志分析与简单可视化建议
原始日志是文本格式,可用标准工具快速提取关键信息:
- 查看某网卡最近10分钟的平均流量(单位 KB/s):
awk '/^2024-06-15 14:[3-4]/ && /eth0/ {sum+=$2} END {print "avg RX:", sum/NR " KB/s"}' /var/log/ifstat.log - 导出为 CSV 供 Excel 或 Grafana 分析(配合 cron 定时):
awk '/^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$/ {t=$0; next} /^[[:space:]]+[0-9.]+/ {gsub(/^[[:space:]]+|[[:space:]]+$/, ""); print t "," $0}' /var/log/ifstat.log > ifstat.csv
注意:ifstat 默认单位是 KB/s(千字节/秒),不是 Kbps;如需 Mbps 换算,需除以 125(1 MBps = 8 Mbps → 1 KB/s = 0.008 Mbps)。









