linux下crontab 任務不執行的可能原因總結
阿新 • • 發佈:2019-02-15
昨天遇到了crontab不能執行的問題,現總結如下:
現象:
a.shell指令碼已經有執行許可權(chmod 777 xxx.sh)
b.在#!/bin/sh的下行已經加上了source ~/.bash_profile
c.已經確認 crond 服務正常執行(service crond status)
d.crontab 檔案正確無誤
e.指令碼可以手動執行但不能自動執行
原因(個人):
crontab沒有給root賦許可權,執行如下命令:
crontab -u root /var/spool/cron/root
另外,檢視crontab操作日誌
現象:
a.shell指令碼已經有執行許可權(chmod 777 xxx.sh)
b.在#!/bin/sh的下行已經加上了source ~/.bash_profile
c.已經確認 crond 服務正常執行(service crond status)
d.crontab 檔案正確無誤
e.指令碼可以手動執行但不能自動執行
原因(個人):
crontab沒有給root賦許可權,執行如下命令:
crontab -u root /var/spool/cron/root
另外,檢視crontab操作日誌
cat /var/log/cron
也可以把輸出定向到檔案中,以便檢視原因。
例如:我的tomcat down掉後自動檢測並啟動的指令碼,發現未啟動原因是JAVA_HOME未指定,但是 echo $JAVA_HOME 確實存在,並且指令碼手動執行能夠成功!
我想可能是系統執行時找不到JAVA_HOME,最後在 catalina.sh 中加入 JAVA_HOME,指令碼自動執行成功!