
我建立了一個 bash 腳本,用於在 AWS 上執行自動 EBS 備份。它是透過 cronjob 啟動的:
0 2 * * * /bin/bash /root/backup_snapshots.sh > backup.log 2>&1
這工作得很好,但接下來我想做的是添加一個退出代碼來判斷腳本是否成功運行(這樣我就可以配置 Nagios 檢查它)。我要做的有幾件事:
- 在 /var/log/backup/ 目錄中建立 backup.log。
- 配置 logrotate 以每天輪換它,以使此檢查更容易檢測。
但我有一個問題是,是否可以讓 cron 將退出程式碼寫入我創建的 backup.log 檔案中?或者我應該採用這種類型的實作:
使用腳本建立 crontab 條目,該腳本可以啟動實際腳本並具有以下退出程式碼:
#!/bin/bash
/root/backup_snapshots.sh 2> /dev/null
if [ $? -eq 0 ]
then
echo "PASS"
else
echo "FAIL" >&2
fi
我想讓這個盡可能簡單,所以如果 cron 可以做到,那就太棒了!如果沒有,下一個最好的方法是建立一個執行 backup_snapshots.sh 並透過 cron 運行的 bash 腳本嗎?
答案1
#!/bin/bash
exec 1>/var/log/backup/backup_sbapshots.log 2>&1
if /root/backup_snapshots.sh
then
echo "PASS"
else
echo "FAIL"
fi
製作如圖所示的 cron 腳本,將 cronjob 運行狀態放入備份日誌檔案中。請注意,沒有提及該$?
變量,因為該if
語句擁有它自己的變數。