1. 程式人生 > >shell中crontab報環境變數找不到問題

shell中crontab報環境變數找不到問題

1 發現問題
一個shell指令碼手動執行沒有問題,但是配置到crontab中失效,報錯環境變數找不到。
2 分析問題
檢視使用者環境變數~/.bash_profile系統環境變數/etc/profile發現環境變數存在,比較費解。
3 解決問題
在.sh指令碼中加入source /etc/profile或者source ~/.bash_profile引入環境變數即可解決。
4 其他注意點
4.1 新建立的cron job不會立刻執行,至少要過2分鐘才執行。若重啟cron則立刻執行。

4.2 每條job執行完畢後,系統會自動將輸出傳送郵件給當前系統使用者。日積月累甚至會撐爆整個系統。所以每條job命令後面進行重定向處理是非常必要的 >/dev/null 2>&1 。前提是對job中命令需要正常輸出已經作了一定處理, 比如追加到某個特定日誌檔案。


4.3 當crontab突然失效時,可嘗試service crond restart解決問題。或者檢視日誌看某個job有沒有執行/報錯tail -f /var/log/cron。

4.4 不要隨意執行crontab -r。它從crontab目錄(/var/spool/cron)中刪除使用者crontab檔案。刪除了該使用者的所有crontab都沒了。

4.5 在crontab中%是有特殊含義的,表示換行的意思。必須進行轉義\%。如date '+%Y%m%d' 是不會執行的,應該換成date '+\%Y\%m\%d'

參考地址:http://blog.csdn.net/dancen/article/details/24355287