在现代IT运维中,Linux Shell脚本是每个系统管理员和开发人员必须掌握的技能之一。通过编写简单的脚本,我们可以实现对服务器状态的自动监控,及时发现问题并发出警报。本文将从零开始,教你如何编写一个实用的系统监控脚本,即使是完全的小白也能轻松上手!
服务器一旦出现CPU过载、内存不足或磁盘空间告急等问题,若不能及时发现,可能导致服务中断甚至数据丢失。手动检查既费时又容易遗漏,而一个自动化的Shell编程入门级监控脚本能帮你7×24小时守护系统健康。
你需要一台运行Linux系统的机器(如Ubuntu、CentOS等),并具备基本的命令行操作能力。确保你有权限执行脚本(通常普通用户即可)。
打开终端,输入以下命令创建一个名为 monitor.sh 的脚本文件:
touch monitor.shchmod +x monitor.sh
chmod +x 命令赋予脚本可执行权限。
使用你喜欢的编辑器(如nano或vim)打开 monitor.sh,粘贴以下代码:
#!/bin/bash# 定义阈值CPU_THRESHOLD=80MEM_THRESHOLD=85DISK_THRESHOLD=90# 获取当前时间CURRENT_TIME=$(date '+%Y-%m-%d %H:%M:%S')# 监控CPU使用率(取1秒内的平均值)CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8}')# 监控内存使用率MEM_USAGE=$(free | awk 'NR==2{printf "%.2f", $3*100/$2 }')# 监控根分区磁盘使用率DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')# 打印当前状态echo "[$CURRENT_TIME] CPU: ${CPU_USAGE}% | 内存: ${MEM_USAGE}% | 磁盘: ${DISK_USAGE}%"# 判断是否超过阈值并报警if (( $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc -l) )); then echo "[警告] CPU使用率过高: ${CPU_USAGE}%"fiif (( $(echo "$MEM_USAGE > $MEM_THRESHOLD" | bc -l) )); then echo "[警告] 内存使用率过高: ${MEM_USAGE}%"fiif [ $DISK_USAGE -gt $DISK_THRESHOLD ]; then echo "[警告] 磁盘空间不足: ${DISK_USAGE}% 已使用"fi top -bn1 获取瞬时CPU空闲率,用100减去它得到使用率。free 命令读取总内存和已用内存,计算百分比。df / 查看根分区使用情况,并提取百分比数值。bc 进行浮点数比较(因为bash原生不支持小数运算)。保存脚本后,在终端执行:
./monitor.sh
你会看到类似如下的输出:
[2024-06-15 10:30:45] CPU: 12.34% | 内存: 65.78% | 磁盘: 75%
如果某项资源使用率超过设定阈值,还会显示警告信息。
为了让脚本每5分钟自动运行一次,可以使用 cron 定时任务:
crontab -e
然后添加一行:
*/5 * * * * /path/to/monitor.sh >> /var/log/system_monitor.log 2>&1
这样,脚本会每5分钟执行一次,并将结果追加到日志文件中,方便后续分析。
通过这个简单的例子,你已经掌握了自动化运维的基础技能。随着经验积累,你可以扩展脚本功能,比如发送邮件告警、集成到监控平台、监控特定进程等。记住,优秀的运维工程师不是靠手动操作,而是靠脚本和工具解放双手!
关键词提示:本文涉及 Linux Shell脚本、系统监控、自动化运维 和 Shell编程入门,适合初学者学习实践。
本文由主机测评网于2025-11-24发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/202511521.html