问题描述
据我了解,这是 /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 )
为什么选择这些特定时间作为默认条目?
起初,我假设它们在安装时有些随机,以平衡系统负载,但这似乎并不正确。
最佳回答
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 有更改日志,因此我们可以了解进行此更改的原因。我已经链接了 bug 编号,幸运的是 Debian 保留了该编号:
-
早一点执行 cron.daily,尽量避免与 cron.weekly 重叠(关闭: Bug#23023 )(从 3.0pl1-46)
现在,要找出 6 AM、47 和 52 的来源,您必须追溯 Debian 之前的历史。我检查了 original Vixie Cron sources ,它似乎不是来自那里。
据我所知,SLS 1.03 没有发布 cron,但 SLS 1.05 发布了。但是,它似乎没有附带 /etc/crontab,并且联机帮助页中的示例有所不同。它也没有 run-parts
。
查看 Debian 0.93R6(miscutils 包)中的 run-parts,它似乎是一个 Debian-specific 工具(当时的一个简短的 Perl 脚本)。所以这些 cron 行可能源自非常早期的 Debian 开发。