2026年01月20日/ 浏览 10
在进行应用部署、系统调试或资源压力测试时,实时掌握系统资源的使用情况至关重要。虽然市面上有很多优秀的开源监控平台(如 Prometheus + Grafana、Zabbix、Netdata 等),但对于临时性、轻量级的监控需求而言,借助 Bash 脚本快速搭建一个简易监控工具,不仅高效实用,更是系统管理员手中的一把利器。
本文将详尽介绍如何使用不足 10 行的 Bash 脚本,在 Linux 环境下实现对 CPU、内存和磁盘使用率的实时监控。该脚本每秒输出一次资源占用信息,并可将结果输出到日志文件中,方便后续导入 Excel 进行可视化分析。适用于测试环境、资源评估以及新应用上线前的压力分析。
本脚本主要分为三部分:
内存使用率监控磁盘使用率监控CPU 使用率监控并通过 while 循环定时刷新数据,每次输出一行三列的数据表,记录系统资源使用情况。
我们使用如下命令提取当前系统的内存使用百分比:
free -m | awk NR==2{printf "%.2f%%\t\t", $3*100/$2 }命令如下:
df -h | awk $NF=="/"{printf "%s\t\t", $5}示例输出:
四、监控 CPU 使用率:top + grep + awktop -bn1 | grep load | awk {printf "%.2f%%\t\t\n", $(NF-2)}
注意:此方法虽不能精准反映 CPU 百分比,但在轻量级监控中具有代表性,适合趋势观察。
将三个子命令分别封装到变量中,并构建一个持续运行的循环:
MEMORY=$(free -m | awk NR==2{printf "%.2f%%\t\t", $3*100/$2 }) DISK=$(df -h | awk $NF=="/"{printf "%s\t\t", $5}) CPU=$(top -bn1 | grep load | awk {printf "%.2f%%\t\t\n", $(NF-2)})定义运行时长,并以 5 秒为间隔输出数据:
end=$((SECONDS+3600)) # 运行 1 小时 while [ $SECONDS -lt $end ]; do echo "$MEMORY$DISK$CPU" sleep 5 done执行方式:
chmod +x stats.sh ./stats.sh若希望将监控结果保存:
./stats.sh >> resource_log.txt可在 Excel 中打开 resource_log.txt,使用制表符分隔进行图表分析。