腳本手動執行正常,放cron中執行有問題的緣由

問題緣由:
  1. crond服務沒啓動
  2. 環境變量如 PATH LANG SHELL 等設置不對
  3. 腳本中引用的文件地址是相對路徑,而非絕對路徑.
 
排查步驟:  以 check.sh 爲例
先檢查cron日誌中是否有腳本的執行記錄:  grep check.sh /var/log/cron*
--> 沒有執行的記錄,則crond服務沒啓動. 檢查crond服務狀態: service crond status
--> 有執行記錄,則crond服務運行正常. 腳本至少是執行過了.
  
清理掉/var/spool/clientmqueue/下的文件. 而後修改crontab讓腳本1分鐘後執行.
待執行完畢後查看新產生的文件, 能夠看到腳本執行的報錯以及X-Cron-Env環境變量.
根據相應的報錯來調整腳本的代碼.
 
最好在 寫腳本的時候在腳本開頭定義 PATH LANG 等腳本正常運行所需的環境變量. 腳本中要使用到的文件或命令,也最好使用全路徑而非相對路徑.
相關文章
相關標籤/搜索