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. 路径问题

相对路径会找不到文件,要使用绝对路径。

相关文章
相关标签/搜索