/etc/crontab 中设置的默认时间背后有什么故事?

/etc/crontab 中设置的默认时间背后有什么故事?

据我了解,这是默认配置/etc/crontab

# 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 )

为什么选择这些特定时间作为默认条目?

起初我以为它们在安装时有一定的随机性,以均衡系统负载,但这似乎并不正确。

答案1

Ubuntu 于 2004 年问世,基于 Debian。当时已经有了当前的 crontab,因此我们可以追溯 Debian 的历史来寻找它的起源。

这是 Debian 0.93R6(1995 年 11 月)的 crontab。cron.daily 条目的小时数是存在的,但分钟数不同:

# m h dom mon dow user  command
42 6    * * *   root    run-parts /etc/cron.daily
47 6    * * 7   root    run-parts /etc/cron.weekly
52 6    1 * *   root    run-parts /etc/cron.monthly

从 Debian 2.1(2009 年 3 月 9 日)开始,它发生了变化。 cron.hourly 条目尚未出现,但其余时间与当前相同:

25 6    * * *   root    run-parts --report /etc/cron.daily
47 6    * * 7   root    run-parts --report /etc/cron.weekly
52 6    1 * *   root    run-parts --report /etc/cron.monthly

值得庆幸的是,Debian 有更新日志,所以我们可以了解为什么进行此更改。我已链接了错误编号,幸好 Debian 保留了该编号:

  • 稍早一点执行 cron.daily,尽量避免与 cron.weekly 重叠(关闭:错误#23023)(来自 3.0pl1-46)

现在,要找出 6 AM、47 和 52 的来源,你必须追溯 Debian 之前的历史。我检查了原始 Vixie Cron 来源,而且它似乎不是从那里来的。

据我所知,SLS 1.03没有发布 cron,但是SLS 1.05确实如此。但是,它似乎没有附带 /etc/crontab,手册页中的示例也不同。它也没有run-parts

查看 Debian 0.93R6(miscutils 包)中的 run-parts,它似乎是 Debian 专用工具(当时是一个简短的 Perl 脚本)。因此,这些 cron 行可能源自 Debian 早期的开发。

相关内容