cron.daily 没有在应该的时间运行?

cron.daily 没有在应该的时间运行?

我的/etc/cron.daily脚本似乎执行的时间比我理解的要晚得多。我在 Ubuntu 中,并且安装了 anacron。

如果我这样做,sudo cat /var/log/syslog | grep cron我会得到类似如下的结果:

Aug 23 01:17:01 mymachine CRON[25171]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Aug 23 02:17:01 mymachine CRON[25588]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Aug 23 03:17:01 mymachine CRON[26026]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Aug 23 03:25:01 mymachine CRON[30320]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ))
Aug 23 04:17:01 mymachine CRON[26363]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Aug 23 05:17:01 mymachine CRON[26770]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Aug 23 06:17:01 mymachine CRON[27168]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Aug 23 07:17:01 mymachine CRON[27547]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Aug 23 07:30:01 mymachine CRON[2249]: (root) CMD (start -q anacron || :)
Aug 23 07:30:02 mymachine anacron[2252]: Anacron 2.3 started on 2014-08-23
Aug 23 07:30:02 mymachine anacron[2252]: Will run job `cron.daily' in 5 min.
Aug 23 07:30:02 mymachine anacron[2252]: Jobs will be executed sequentially
Aug 23 07:35:02 mymachine anacron[2252]: Job `cron.daily' started

如您所见,它在 3:25 尝试执行某项操作。但cron.daily执行实际上是在 7:35 开始的。

我的/etc/crontab是:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 3    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

据我了解,每日脚本确实是针对 3:25 的。

我的/etc/anacrontab是:

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

# These replace cron's entries
1   5   cron.daily  run-parts --report /etc/cron.daily
7   10  cron.weekly run-parts --report /etc/cron.weekly
@monthly    15  cron.monthly    run-parts --report /etc/cron.monthly

那么...有人知道为什么我的 cron 在 3:25 开始做某事但实际上在 7:35 开始工作吗?

另外,正如您在日志中看到的那样,每小时的作业正在正确的时间执行:小时 17 分钟,这正是我所拥有的/etc/crontab

最后,从日志来看,我的日常工作似乎实际上是由anacron而不是来运行的cron?所以cron找不到任何要运行的东西(在 3:25),然后anacron在 7:35 运行作业?如果是真的,我该如何解决这个问题?

提前致谢,

答案1

test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

这将运行test命令,然后仅( cd ...)在测试命令失败时运行序列。如果安装了 anacron,则测试命令将成功,其余命令行将不会运行。换句话说,只有cron.daily在未安装 anacron 时才会执行此行。

同时,anacron 会定期调用,最终会cron.daily根据自己的配置文件运行。看起来 anacron 可能不会在当天早些时候被调用,否则它会更早地运行 cron.daily。

如果您希望命令从 cron 而不是 anacron 运行,您可以编辑它们各自的配置,并可能将 anacron 设置为在当天早些时候运行。或者,如果您不想使用 anacron,您可以完全删除它。

相关内容