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

2021-09-23 17:31:21 字數 953 閱讀 7230

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...