crontab定時任務不執行的緣由

查看全部用戶下的定時任務:python

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

 

docker容器裏cron沒生效 或 沒有日誌

若是沒有日誌,多是沒有打開rsyslog (centos)shell

/etc/init.d/rsyslog startcentos

CentOS 7:bash

  1. # systemctl restart rsyslog.service

CentOS 6:服務器

  1. # service rsyslog restart

 

centos7鏡像建立的容器裏面安裝服務後,可能會啓動rsyslog 失敗ssh

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

http://dockone.io/question/729spa

 

列舉5個緣由:

1 crond服務未啓動rest

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. 路徑問題

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

相關文章
相關標籤/搜索