cron 与 anacron

cron 与 anacron

我已经很好地掌握了 cron/anacron 在 Linux 上的工作原理。我的问题是这样的:

  1. /etc/cron.dailyanacron 在登录时运行,并检查自运行中的脚本以来是否已经超过一天
  2. anacron 运行 中的脚本/etc/cron.daily,并更新 中的时间戳/var/spool/anacron/cron.daily
  3. anacron 退出
  4. 计算机保持开启状态超过 24 小时
  5. cron 运行并检测 cron.daily 的时间匹配
  6. cron 从那时起什么也没做test -x anacrontab" == True

如果我的计算机运行超过 24 小时,cron 如何运行 cron.daily 中的脚本(这是基于 Debian 的发行版)?

默认值/etc/crontab(每分钟运行一次)测试是否存在(或更准确地说,-x 位)/usr/bin/anacron,如果找到它,则忽略该/etc/cron.daily文件夹,但它似乎不会重新启动 anacron 来完成工作。

编辑:

因此 cron 确实从该文件夹启动 anacron /etc/cron.d,但前提是计算机每天上午 7:30 开启并登录。在做了一些电子表格功夫之后,我得出的结论是,其中的脚本/etc/cron.daily运行间隔将在 1 分钟到 31.5 小时之间。

前任:

场景一:

  • 2021年5月23日晚上11点59分登录
  • 假设 anacron 时间戳/etc/cron.daily早于 5/23/2021,anacron 运行所有脚本/etc/cron.daily并将时间戳更新为 5/23/2021
  • 登出
  • 2021 年 5 月 24 日中午 12:00 重新登录
  • anacron 看到上次运行是 5/23/2021,现在是 5/24/2021,所以 anacron 运行了所有脚本/etc/cron.daily
  • 两次运行之间的经过时间:1 分钟

场景2:

  • 2021年5月23日 12:00 登录
  • 假设 anacron 时间戳/etc/cron.daily早于 5/23/2021,anacron 运行所有脚本/etc/cron.daily并将时间戳更新为 5/23/2021
  • 计算机保持开启并登录状态直至 2021 年 5 月 23 日上午 7:30
  • cron 从其 crontab 文件运行 anacron/etc/cron.d
  • 由于时间戳是 5/23/2021,所以没有任何反应
  • 计算机保持开启并登录状态直至 2021 年 5 月 24 日上午 7:30
  • cron 从其 crontab 文件运行 anacron/etc/cron.d
  • anacron 看到上次运行是 5/23/2021,现在是 5/24/2021,所以 anacron 运行了所有脚本/etc/cron.daily
  • 两次运行之间的经过时间:31.5 小时

答案1

所有系统/etc/cron.daily/etc/cron.weekly等文件都包含一个要运行的条目纳克朗其中又包含一个要运行的条目计划任务/etc/crontab包括条目运行部件以便纳克朗要么由以下人员运行运行部件或通过计划任务

另一个需要考虑的文件是/etc/anacrontab它可以覆盖某些效果/etc/crontab

一个重要的系统计划任务相关文件是/etc/cron.daily/logrotate用于启动日志轮换处理的脚本。

普通用户定时任务独立于系统 cronjobs 执行。

请注意,并不是/etc/crontab每分钟都运行 - 活动由各种 crontab 规范决定。

相关内容