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'。
linux的crontab排程shell命令
1 編寫shell指令碼,新增可執行許可權。新增可執行許可權 chmod x backup spagobi db.sh 2 編寫排程命令 用root使用者在 etc cron.allow新增可排程crontab的使用者。沒有這個檔案則建立它 每個使用者提交的crontab排程都存放在 var spo...
crontab不能成功執行shell指令碼的可能原因
我們經常會需要使用crontab進行定時任務,但crontab不能成功執行指令碼的情況還是很常見,總結起來,本人了解到的和自己遇到的可能原因主要有以下幾個 1.crond程序不存在,該程序是crontab的守護程序,它必須存在才能讓crontab正常使用 2.系統時間不對 3.環境變數的問題 cro...
crontab不能成功執行shell指令碼的可能原因
我們經常會需要使用crontab進行定時任務,但crontab不能成功執行指令碼的情況還是很常見,總結起來,本人了解到的和自己遇到的可能原因主要有以下幾個 1.crond程序不存在,該程序是crontab的守護程序,它必須存在才能讓crontab正常使用 2.系統時間不對 3.環境變數的問題 cro...