ANALYSIS
创建性能监控脚本 monitor_server.sh
PRTCL // BASH
#!/bin/bash
# 配置:监控阈值(可按需修改)CPU_THRESHOLD=80MEM_THRESHOLD=85DISK_THRESHOLD=85EMAIL="admin@example.com"
# 获取当前服务器性能指标CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)MEM_USAGE=$(free | grep "Mem" | awk '{printf("%.2f", $3/$2 * 100.0)}')DISK_USAGE=$(df -h / | awk 'NR==2{print $5}' | sed 's/%//g')
# 检查是否超过阈值并发送告警ALERT_MSG=""
if (( $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc -l) )); then ALERT_MSG+="[ALERT] CPU Usage: ${CPU_USAGE}% (Threshold: ${CPU_THRESHOLD}%)"fi
if (( $(echo "$MEM_USAGE > $MEM_THRESHOLD" | bc -l) )); then ALERT_MSG+="[ALERT] Memory Usage: ${MEM_USAGE}% (Threshold: ${MEM_THRESHOLD}%)"fi
if [ $DISK_USAGE -gt $DISK_THRESHOLD ]; then ALERT_MSG+="[ALERT] Disk Usage: ${DISK_USAGE}% (Threshold: ${DISK_THRESHOLD}%)"fi
# 如果有告警信息,则发送邮件if [ -n "$ALERT_MSG" ]; then echo -e "$ALERT_MSG" | mail -s "服务器性能告警 - $(hostname)" "$EMAIL"fi
# 可选:记录当前性能指标到日志文件LOG_DIR="$HOME/monitoring"mkdir -p "$LOG_DIR"LOG_FILE="$LOG_DIR/performance_$(date +%Y%m%d).log"
echo "$(date '+%Y-%m-%d %H:%M:%S') - CPU: ${CPU_USAGE}%, MEM: ${MEM_USAGE}%, DISK: ${DISK_USAGE}%" >> "$LOG_FILE"作用:
该脚本在执行时会:
- 实时获取 CPU、内存、磁盘使用率;
- 与预设阈值进行比较;
- 当超过阈值时发送告警邮件;
- 同时记录性能数据到日志文件,便于后续分析。
设置定时任务(crontab)
PRTCL // BASH
# 添加到用户 crontab(替换 YOUR_USERNAME 为实际用户名)*/5 * * * * /home/YOUR_USERNAME/scripts/monitor_server.sh >> /home/YOUR_USERNAME/monitoring/cron.log 2>&1作用:
*/5 * * * *表示每 5 分钟执行一次;- 调用上述监控脚本;
- 将脚本的标准输出和错误追加写入
cron.log,便于排查问题; - 注意:crontab 不识别
~,必须使用绝对路径。
安装依赖与配置(执行一次即可)
PRTCL // SH
# 安装邮件发送工具(Ubuntu/Debian)sudo apt-get install mailutils
# 赋予脚本执行权限chmod +x ~/scripts/monitor_server.shR P
Rhine Lab Pioneer Division
Auth_Verified: 2026.04.06
Auth_Verified: 2026.04.06
