2016-05-17 142 views
0

我有一個執行命令的perl腳本。我將此命令的輸出保存到一個數組,並檢查輸出中的內容以向我發送成功或失敗消息。從shell腳本和cron運行腳本的不同郵件

這工作正常,當我運行腳本本身。但是,當我安排腳本作爲cronjob運行時,無論輸出如何,我都會收到失敗的郵件。

我使用腳本中的所有abs paths並知道cron正在執行,因爲我在我的日誌中看到command is executed successfully

有人能告訴我爲什麼區別?

需要注意的一件事是,該命令需要大約一分鐘才能完成執行,並且腳本正在等待直到執行該命令以檢查輸出。所以當我運行腳本時,我在郵件中看到了一些延遲。但在cron中,我在運行時立即收到一封郵件。我假定cron不在等待命令執行並檢查輸出。

難道會是這樣嗎?

回答

2

從crontab運行時,不能依賴任何環境變量,TTY或路徑。聽起來你已經有了路徑排序,但郵件可能期望知道關於你的事情。嘗試在沒有環境的情況下運行腳本,以獲得有關您的問題的有意義的消息:su {your_name} -c {您的腳本}

+0

真棒,Wayne。我像你說的那樣運行了命令,注意到cron無法加載腳本運行的lib文件。我現在從腳本中的包裝器加載它。 感謝您的快速響應。 – user3164754