crontab定時任務不執行的原因


查看所有用戶下的定時任務:

for in `cat /etc/passwd | cut -d":" -f1`;do crontab --u $u;done

 

docker容器里cron沒生效 或 沒有日志

如果沒有日志,可能是沒有打開rsyslog (centos)

/etc/init.d/rsyslog start

CentOS 7:

  1. # systemctl restart rsyslog.service

CentOS 6:

  1. # service rsyslog restart

 

centos7鏡像創建的容器里面安裝服務后,可能會啟動rsyslog 失敗

[root@1a7e1970060a /]# systemctl start sshd
Failed to get D-Bus connection: Operation not permitted 

http://dockone.io/question/729

 

列舉5個原因:

1 crond服務未啟動

crontab不是Linux內核的功能,而是依賴一個crond服務,這個服務可以啟動當然也可以停止。如果停止了就無法執行任何定時任務了,解決的方法是打開它:

crond

service crond start

如果提示crond命令不存在,可能被誤刪除了,CentOS下可以通過這個命令重新安裝:

yum -y install crontabs

2 權限問題

比如:腳本沒有x執行權限,解決方法:

增加執行權限,或者用bash abc.sh的方法執行

3 路徑問題

有的命令在shell中執行正常,但是在crontab執行卻總是失敗。有可能是因為crontab使用的sh未正確識別路徑,比如:以root身份登錄shell后執行一個/root/test.sh,只要執行

./test.sh

就可以了。但是在crontab中,就會找不到這個腳本,比如寫完整:

/root/test.sh

4 時差問題

因為服務器與客戶端時差問題,所以crontab的時間以服務器時間為准。

5 變量問題

有時候命令中含有變量,但crontab執行時卻沒有,也會造成執行失敗。

6. 路徑問題

相對路徑會找不到文件,要使用絕對路徑。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM