Crontab 时间混乱

Crontab 时间混乱

有人可以解释一下为什么我假设的每周 cron 作业会在周日早上 06:47 运行,但实际上却是在周二早上 00:10 运行的吗?

这是一个相当原始的 Debian Stretch 盒子(已经等待使用一段时间了)。

我有以下 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 6    * * *   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 )
#

以及以下 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

/usr/sbin/anacron 存在并且可以执行。

日期:

Tue 29 Jan 15:26:23 UTC 2019

正常运行时间:

15:26:30 up 41 days,  7:03,  2 users,  load average: 0.00, 0.00, 0.00

Syslog 显示每周的 cronjob 于今天早上 00:10(星期二)运行:

Jan 29 00:10:10 RT-ARCHIVE anacron[48734]: Job `cron.weekly' started
Jan 29 00:10:10 RT-ARCHIVE anacron[49100]: Updated timestamp for job `cron.weekly' to 2019-01-29

为什么是星期二?如果系统刚刚启动,我可能知道它会通过 anacron 进行追赶,但事实并非如此。

另外,这项工作并没有在周日进行,只是为了明确这一点。

我以前使用过 cron,没有出现问题,我遗漏了什么???

编辑:

提醒到这里的所有人,到目前为止,我只(故意)使用过 cron,而不是 anacron。读完这篇文章后,我意识到我提供的较新的虚拟服务器默认安装了 anacron,而较旧的虚拟服务器则没有。根据 Debian Wiki,anacron 是:

在笔记本电脑上由 Debian-Installer 默认安装,并使用桌面任务

因此也许我们的 IT 人员已经开始以不同的方式设置它们......

答案1

/etc/crontab仅当/usr/sbin/anacrontab不存在或不可执行时,运行中的三个条目。

注意它们以 开头test -x /usr/sbin/anacrontab。这个命令首先运行,然后由于后面跟着||,所以只有当前一个命令失败时才会运行后面的命令。

正如文件中的注释anacrontab所述,它会覆盖这三个条目。

因此,anacrontab 中的 weekly 条目每 7 天运行一次,延迟 10 分钟。由于您未指定START_HOURS_RANGE,因此它们会在午夜过后的指定分钟数运行。

相关内容