VPS 用久了一時沒有察覺,硬碟不小心被撐爆了,MySQL 就馬上崩潰,整台主機也就 GG 了;前陣子 VPS 主機就發生這事兒,剛好看到 一介資男 在 Facebook 提供了硬碟空間不足自動發送郵件通知腳本,趕快做筆記。
一介資男部落格原文:[VPS] 伺服器空間使用量警示
這個腳本會用 mailgun api,所以先要有一個 mailgun domain 的帳號。
腳本內容:( 複製後貼上 Notepad++ ) 存成 disk_alarm.sh 檔名,請自行修改成你的 mailgun 內容。
#!/bin/bash
CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
THRESHOLD=70
if [ "$CURRENT" -gt "$THRESHOLD" ] ; then
curl -s --user 'api:key-c0f4dd66a2f3b7ac13bd3333333333' https://api.mailgun.net/v3/ 你的域名 /messages -F from='域名 SMTP 帳號' -F to='收件人信箱' -F subject='主旨:你的哪一台 VPS server' -F text='伺服器硬碟使用率 '$CURRENT'% 過高!儘速通知相關人員~'
fi
THRESHOLD=70 是當硬碟空間到達 70% 時,就會寄信通知你,你也可以自行調整。
安裝腳本
上傳到腳本到 VPS 主機目錄 (/root)
給予執行權限:
chmod +x disk_alarm.sh
開一個目錄存放腳本:
sudo mkdir -p /opt/disk-alarm
sudo mv disk_alarm.sh /opt/disk-alarm/
測試執行腳本:
sudo /opt/disk-alarm/disk_alarm.sh
如果出現錯誤如下
sudo: unable to execute /opt/disk-alarm/disk_alarm.sh: No such file or directory
安裝 dos2unix 套件
sudo apt install dos2unix
執行一次 dos2unix
dos2unix /opt/disk-alarm/disk_alarm.sh
回覆 dos2unix: converting file /opt/disk-alarm/disk_alarm.sh to Unix format ... 表示 OK 了
測試硬碟空間不足時,會不會正常發信:
使用 df -h 指令檢查你的空間,例如:查看後空間有 50%,腳本配置的 THRESHOLD 改為 49,手動執行一次腳本:
sudo /opt/disk-alarm/disk_alarm.sh
回覆
{
"id": "<20170627002604.101848.F8524ED033333333@yungke.me>",
"message": "Queued. Thank you."
}
然後去郵箱收信,會有一封通知信,如下圖:

設置 crontab,我設置每天 1 點檢查一次硬碟空間。
0 1 * * * sudo /opt/disk-alarm/disk_alarm.sh > /dev/null 2>&1
參考文件:
一介資男 – VPS 伺服器空間使用量警示

發佈留言