Linux

如果條件,Crontab 會影響 bash 腳本嗎?

  • November 12, 2018

我在這裡有點困惑,並且不確定如何調試它。我有一個自己編寫的 bash 腳本,它檢查 samba 共享是否處於活動狀態,如果沒有,則向我發送電子郵件。

腳本在 /root/SKRIPTS/,權限如下所示:

-rwxr-xr-x   1 root  wheel   281 Nov  8 08:54 test_samba_shares.sh
-rwx------   1 root  wheel    39 Nov  7 13:56 smbclient.cred

.sh 腳本的內容是這樣的:

smbclient -L 10.0.0.1 -A /root/SKRIPTS/smbclient.cred | grep -q Backup

if [ $? -eq 0 ]
then
   echo "Backup_* mounted, nothing to do"
else
   echo "Subject: Samba has failed" | /usr/sbin/sendmail -v mail@localmail.server
fi

return 1;

/etc/crontab 看起來像這樣(僅限條目)

10 1 * * * root /root/SKRIPTS/test_samba_shares.sh

問題是,如果我以 root 身份執行它,它會完美執行。但是每天晚上我都會收到一封電子郵件,說 samba 失敗了,這表明 cron 腳本不知何故進入了 else 路徑。怎麼會這樣?我在這裡遺漏了一些明顯的東西嗎?調試這個的最佳方法是什麼?

謝謝你的幫助

有時,cron 作業不會以$PATH您可能期望的方式執行。首先,我會嘗試完全限定您的smbclient執行檔的路徑,只是為了消除這種可能性。PATH或者,在 cron 呼叫的包裝腳本中顯式導出您的。

引用自:https://serverfault.com/questions/939665