我如何找出 cron 没有运行我的作业的原因?

我如何找出 cron 没有运行我的作业的原因?

我使用的是 Ubuntu 14.04,并且 cron 守护进程正在运行:

# ps ax | grep cron
822 ?        Ss     0:00 cron

但它没有执行任何作业。我之前收到过/var/log/syslog这样的条目:

2014-05-04T11:47:01.839754+01:00 localhost CRON[29253]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))

但现在没有与 cron 相关的条目。我也收到这样的条目/var/log/auth.log

2014-05-04T11:47:01.839183+01:00 localhost CRON[29252]: pam_unix(cron:session): session opened for user root by (uid=0)
2014-05-04T11:47:13.495691+01:00 localhost CRON[29252]: pam_unix(cron:session): session closed for user root

但同样,现在没有与 cron 相关的条目。

我不知道有什么改变。我尝试过重新启动 cron:

# service cron restart
cron stop/waiting
cron start/running, process 24907

我尝试使用crontab -e添加一个* * * * * date >> /tmp/somefile有效的 cron 作业,但它在 中安装了一个新的 crontab /var/spool/cron/crontabs/root,而我希望 cron 使用 中的文件/etc/crontab

是否有任何我可以使用的调试选项,或者某个地方的日志可能会给出我可以调查的错误消息?

答案1

为了进一步帮助您调试工作中的问题cron,您应该检查您的邮件。这通常存储在类似/var/mail/<user_name>或 的文件中/var/spool/mail/<user_name>

这两个文件实际上是我的 Debian 机器上的硬链接,但我不知道这是否是标准的。

解释

cron(8)页面:

执行命令时,任何输出都会邮寄给 crontab 的所有者(或者发送给 crontab 中 MAILTO 环境变量中指定的用户,如果存在的话)。

答案2

您已经表明 root 没有 crontab,是否有任何用户有 crontab 条目?如果您仅使用root,那么您还可以检查以下目录: /etc/cron.daily/ - /etc/cron.hourly/ - /etc/cron.monthly/ - /etc/cron.weekly

在我的机器(centos 6.4)上,我的 /etc/cron.daily/ 目录中有 mlocate.cron ,并且 cron 每天运行该脚本。

所以我认为你只需要添加 cron 作业。

答案3

我通过将权限更改/etc/crontab为以下内容解决了这个问题:

-rw-r--r-- 1 root root 778 May 10 21:31 /etc/crontab

以前是-rw-rw-r--。这是唯一的改变。以前没用,现在可以了。仍然不知道为什么。

答案4

我也遇到了类似的问题,但是在将 root 指定为 上的用户后/etc/crontab,cron 作业开始触发。

这可能是由于 所crontab -e遵循的语法与/etc/crontab.

相关内容