我正在構建一個在Ubuntu上運行的備份腳本。Crontab以不同的方式運行bash
backup-all.sh文件:
echo "bootstrap"
/home2/backup/bootstrap/backup.sh
BOOTSTRAP_STATUS=$([ "$?" == 0 ] && echo "OK" || echo "** FAIL **")
echo "sv2"
/home2/backup/sv2/backup.sh
SV2_STATUS=$([ "$?" == 0 ] && echo "OK" || echo "** FAIL **")
if [ "$BOOTSTRAP_STATUS" == "OK" ] && [ "$SV2_STATUS" == "OK" ] ; then
TITULO="Backup OK"
else
TITULO="Backup !FAILED!"
fi
(
echo "Backup status"
echo "-------------"
echo "BOOTSTRAP_STATUS = $BOOTSTRAP_STATUS"
echo "SV2_STATUS = $SV2_STATUS"
echo "-------------"
) | mail -s "${TITULO}" "[email protected]"
的backup.sh文件結尾爲:
exit 0 # for success; OR:
exit 1 # for errors + send mail with log file
* backup.sh文件中包含的rsync和MySQL備份。
當腳本返回1(錯誤)時,它也會向我發送一封電子郵件,告訴我這是錯誤的,並且所有步驟都記錄在日誌文件中。
**我有電子郵件。一個用於概述,另一個用於每個獲得錯誤的「服務器」。
所以,如果我手動運行,
./backup-all.sh
一切都是好的。我只收到一封標題爲「備份確定」的郵件。
如果我等待cron運行這個工作,我只收到一封標題爲「Backup!FAILED!」的郵件,儘管我沒有收到錯誤信息並且日誌文件沒有問題。
crontab -e
0 0 * * * /home2/backup/backup-all.sh
那麼,我的腳本的條件/退出值有什麼cron工作?
如果你沒有明確地請求bash(用'#!/ bin/bash'),很可能是'[「$?」 == 0]'是一個語法錯誤。 –
真的不是語法錯誤,只是傳遞給'['的無效參數。 –