查看所有用戶下的定時任務:
for u in `cat /etc/passwd | cut -d":" -f1`;do crontab -l -u $u;done
docker容器里cron沒生效 或 沒有日志
如果沒有日志,可能是沒有打開rsyslog (centos)
/etc/init.d/rsyslog start
CentOS 7:
- # systemctl restart rsyslog.service
CentOS 6:
- # 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. 路徑問題
相對路徑會找不到文件,要使用絕對路徑。
