帮我写一个监控服务器 cpu内存,磁盘,性能使用情况的shell脚本
时间: 2024-05-27 16:12:06 浏览: 197
shell脚本监控系统负载、CPU和内存使用情况
#!/bin/bash
# 获取当前时间
now=$(date +"%Y-%m-%d %H:%M:%S")
# 获取CPU使用情况
cpu=$(top -b -n 1 | grep "Cpu(s)" | awk '{print $2 + $4}')
# 获取内存使用情况
mem=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
# 获取磁盘使用情况
disk=$(df -h | grep "/dev/sda1" | awk '{print $5}' | cut -d'%' -f1)
# 获取系统负载
load=$(uptime | awk '{print $10}' | cut -d',' -f1)
# 输出监控信息
echo "$now CPU使用率:$cpu% 内存使用率:$mem% 磁盘使用率:$disk% 系统负载:$load"
# 如果CPU使用率超过80%,发送警报邮件
if (( $(echo "$cpu > 80" | bc -l) )); then
echo "CPU使用率过高,请立即处理!" | mail -s "警报:CPU使用率过高" admin@example.com
fi
# 如果内存使用率超过80%,发送警报邮件
if (( $(echo "$mem > 80" | bc -l) )); then
echo "内存使用率过高,请立即处理!" | mail -s "警报:内存使用率过高" admin@example.com
fi
# 如果磁盘使用率超过80%,发送警报邮件
if (( $(echo "$disk > 80" | bc -l) )); then
echo "磁盘使用率过高,请立即处理!" | mail -s "警报:磁盘使用率过高" admin@example.com
fi
# 如果系统负载超过1,发送警报邮件
if (( $(echo "$load > 1" | bc -l) )); then
echo "系统负载过高,请立即处理!" | mail -s "警报:系统负载过高" admin@example.com
fi
# 保存监控信息到日志文件
echo "$now CPU使用率:$cpu% 内存使用率:$mem% 磁盘使用率:$disk% 系统负载:$load" >> /var/log/monitor.log
阅读全文