當系統的 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