解密 Ubuntu 的 /etc/crontab

解密 Ubuntu 的 /etc/crontab

我的机器上的情况/etc/crontab如下:

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 )

我有两个相关的问题:

  • 为什么是 17、25、47、52?我知道你可能想错开不同的工作,但为什么不更均匀地错开它们呢?比如 0、15、30、45?
  • 为什么 anacron 用于每日/每周/每月命令,而不用于每小时命令?每小时命令更容易被忽略吗?(如果我理解正确的话,anacron 的用途是,如果您有一个“每周六”命令,而计算机在周六关闭,它会改为在周日运行该命令)。

答案1

我不知道第一个问题的答案。这是第二个问题,

Cron 是为持续运行的机器设计的。如果在作业到期时关闭了机器,作业就不会运行。为了更好地处理这种情况,我们编写了一个名为 Anacron 的新工具。anacron 的任务是确保这些每日、每周和每月活动确实发生,前提是计算机在一天中的某个时间点处于开启状态。它不记录小时、分钟或秒,只记录天、月和周。

它的配置文件是 -> /etc/anacrontab

Anacron 在启动时通过脚本 /etc/init.d/anacron 运行。

Anacron 并不期望系统像服务器一样全天候运行。

当您想在非 24 x 7 运行的机器上自动执行后台作业时,您应该使用 anacron。

如果您将备份脚本安排在每天晚上 11 点作为常规 cron 作业运行,而您的笔记本电脑在晚上 11 点没有启动,那么您的备份作业将不会执行。

然而,如果您在 anacron 中安排了相同的作业,那么您可以确保一旦笔记本电脑重新启动,该作业就会被执行。

它是台式机和笔记本电脑的理想选择。

在此处输入图片描述

相关内容