当系统的 Load Average 很高时, 可能面临当机的风险, 遇到这个问题可以用 Shell Script 定时检查系统的 Load Average, 当发现 Load Average 到达某一个设定好的数值时, 便自动执行一些指令, 例如重启服务, kill process 或向系统管理员发出电邮通知等。
以下 Shell Script 会透过定时读取 /proc/loadavg 的数值, 当发现 Load Average 高时 (以下设定为 5), 便会向系统管理员发出电邮通知, 同时会写入 /var/log/loadavg.log 作纪录, 另外也可以按自己的需要, 重新启动服务 (如 httpd)。
首先建立 check-loadavg.sh 档案, 并加入以下内容:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash loadlimit=5 toemail=you@yourdomain.com host=`hostname -f` loadavg=`cat /proc/loadavg | awk {'print $1'} | cut -d "." -f1` if [ $loadavg -ge $loadlimit ] then ### run command here echo "The Load Average of $host reached $loadavg" | mail -s "$host : Load Average Alert" $toemail date=`date` echo "$date: The Load Average of $host reached $loadavg" >> /var/log/loadavg.log fi |
然后给予 check-loadavg.sh 执行权限:
# chmod +x check-loadavg.sh
最后将 check-loadavg.sh 加入 crontab, 每分钟执行一次:
# crontab -e
加入以下一行:
* * * * * /path/to/check-loadavg.sh >/dev/null 2>&1