我有一個備份腳本作為 cron 作業運行並創建 /var/log/messages/ 的每日備份。請注意,該腳本更多的是用於學習經驗而不是實際應用。我加入了 if / else 語句來檢查 tar 指令執行後的退出代碼。該腳本之前運行良好,但在我添加此功能後它掛起。程式碼如下:
#!/bin/bash
admin="[email protected]"
of=messages-backup-$(date +%Y%m%d).tgz
cd /var/log/
tar -czvf $of messages
if [ $? -eq 0 ]; then
mail -s "Backup of /var/log/messages was successful!" $admin
exit 0
else
mail -s "Backup of /var/log/messages has failed!" $admin
exit 1
fi
cp $of /home/user/
rm -rf $of
輸出:
[root@nidesant2 Scripts]# ./backup.sh
messages
^C
(Interrupt -- one more to kill letter)
答案1
改變
mail -s "Backup of /var/log/messages was successful!" $admin
到
echo hello | mail -s "Backup of /var/log/messages was successful!" $admin
或者
mail -s "Backup of /var/log/messages was successful!" $admin < /dev/null
第一個選項,您可以使用您喜歡的任何文字作為訊息正文。第二個選項將發送帶有空白郵件正文的電子郵件。對於不成功的備份,對第二個電子郵件命令重複相同的變更。
出於學習目的,您應該先檢查 tar 檔案的建立、複製和刪除是否成功完成,然後再確定是否成功。要做到這一點,你可以這樣做。
改變
tar -czvf $of messages
到
tar -czvf $of messages && cp $of /home/user/ && rm -rf $of
另外,透過此更改,您可以從腳本末尾刪除cp $of /home/user/
和。rm -rf $of
然後,您的 if/else 將根據所有三個命令的成功完成或該字串中三個命令中的任何一個命令的失敗完成來執行。