开发者工具 · Crontab 生成器
anacron 和 cron.daily:计划的作业如何在机器关闭时幸存下来
· 背景
计划任务 可靠性 调度
cron 假设机器始终处于开启状态; anacron 没有。这篇文章解释了 anacron 如何跟踪上次运行,Debian 风格的 cron.daily 目录如何使用它,以及如何在两者之间进行选择。
睡眠机器场景位于浏览器之外;预览仅搜索未来的候选人
ToolAcre 无法观察笔记本电脑是否在 06:25 期间处于睡眠状态。它的下一次运行函数接收一个起始时刻并严格向前搜索,一分钟后开始。不会返回较早的匹配分钟数,因为该功能是未来预览,而不是历史记录或恢复引擎。
这使得该列表对于计划很有用,但对于追赶却没有提及。过去的候选人失踪可能已经运行、被跳过或被其他服务处理;浏览器没有执行记录。从已安装的调度程序诊断停机行为,而不是从仅限未来的列表中的缺席情况来诊断。
此处未建立外部 cron 错过运行行为
工作簿断言 cron 会丢弃错过的分钟数。此存储库中没有守护程序实现或正常运行时间测试,因此不重复通用声明。事实证明,ToolAcre 本身并不对作业进行排队:它计算内存中的日期并将其返回到页面。
目标调度程序可以记录错过运行的策略,并且包装器可以添加另一个策略。明确地捕捉该政策。相同的 `0 6 * * *` 表达式可以参与不同的恢复设计,而无需更改其五个值中的任何一个。
anacron 状态和延迟未实现
`cron.js` 中没有 anacron 时间戳文件、周期计数器或启动延迟。解析器知道日历字段,而预览知道可配置的搜索范围。两者都不存储外部操作上次完成的时间。
因此本文无法从项目证据解释 anacron 的确切状态转换。如果需要赶上,请研究并测试实际设施。 ToolAcre 仍然可以构建与其一起保留的任何精确时间 cron 行,但它无法验证 anacron 策略。
anacrontab 语法位于五字段解析器之外
anacrontab 行不是五字段 cron 表达式。将其周期、延迟和标识符输入 ToolAcre 会导致字段计数或值验证失败,而不教授任何有关其实际语法的内容。类似的调度目标并不意味着可互换的文件格式。
使本机验证器保持本机语法。将此路由用于分钟到工作日的表达式,并使用单独的源进行基于时间段的追赶配置。翻译应该保留操作要求,而不仅仅是强制一种文本形式通过另一个解析器。
cron.daily 接线
正在审查的代码库中不存在目录机制和包之间的切换。生成器无法知道 `/etc/cron.daily` 是否存在、哪个运行程序调用它或者安装另一个包时会发生什么。任何此类接线都是特定于环境的证据。
在移动任务之前清点目标。目录名称本身并不能显示挂钟时间或追赶行为。将观察到的服务配置与要求进行比较,仅当作业确实保留在兼容的 cron 路径中时才保留 ToolAcre 表达式。
工作边界:比较未来的候选人,但不承诺赶上
对于日常示例,请输入 `0 6 * * *` 并选择部署区域。预览版列出了最多五个未来的 06:00 挂钟候选者。如果开始时刻已经超过今天的 06:00,明天将成为第一个结果。这是前瞻性搜索行为,而不是今天早上发生的事情的证据。
使用列表检查日历意图和区域转换。然后在预定时间内重新启动或暂停安全测试环境,并观察实际调度程序的策略。这两个实验回答了不同的问题,应单独记录。
持久计时器行为未经验证并被忽略
工作簿提到了另一个服务管理器中的持久设置。这里没有单元解析器或测试支持该语句。它可能是相关的外部研究,但该模块不会将其变成没有权威来源材料的推荐。
错过运行的要求值得明确的接受标准:是否立即运行、跳过、合并或保留每个事件。选择一个记录所需结果的系统并对其进行验证。 ToolAcre 可以提供用作基线的 cron 节奏,仅此而已。
要点:将时间表与单独验证的错过运行政策配对
如果机器可能不可用,则作为可靠性设计的循环表达式是不完整的。日历匹配和追赶政策是分开的。 ToolAcre 公开了前者,并故意没有为后者保留执行状态。
预览未来,记录区域,然后测试目的地的错过运行行为。如果另一个机制拥有恢复功能,请在表达式旁边记录下来。避免说生成器或五个字段保证重试,因为两者都无法观察到错过了一次运行。