【问题标题】:Run Cron job every N minutes plus offset每 N 分钟运行一次 Cron 作业加上偏移量
【发布时间】:2023-03-09 18:22:01
【问题描述】:

*/20 * * * *

确保它每 20 分钟运行一次,我想每 20 分钟运行一次任务,从 5 点开始,Cron 可以吗?会不会:

5/20 * * * *?

【问题讨论】:

  • 感谢巴比伦人,他们决定将我们的时间系统精确地除以 1、2、3、4、5 和 6。
  • 如果它可以被 2 和 3 整除,它也可以被 6 整除

标签: cron


【解决方案1】:

要从整点 5 点开始每 20 分钟运行一次任务,试试这个:

 5-59/20 * * * *

说明

分钟字段中的*0-59/1 相同,其中0-59范围1步骤。该命令将在 范围 (0) 内的第一分钟运行,然后在与第一分钟相距 step (1) 的所有连续分钟运行,直到最后一个 ( 59).

这就是为什么*/20 * * * * 将在 0 分钟、20 分钟后和 40 分钟后运行 - 这与每 20 分钟相同。但是,*/25 * * * * 将在 0 分钟、25 分钟后和 50 分钟后运行 - 这与每 25 分钟不同。这就是为什么通常希望在分钟字段中使用平均分为 60 的步长值。

所以要偏移开始时间,请明确指定范围并将第一个值设置为偏移量。

示例

5-59/20 * * * * 将在 5 分钟后、25 分钟后和 45 分钟后运行。

10-59/25 * * * * 将在 10 分钟后和 35 分钟后运行。

1-59/2 * * * * 将每隔一分钟运行一次。

【讨论】:

  • 完美运行。你是怎么发现的?你能指点我看文档吗?谢谢。
  • 各种谷歌搜索将我引向this Server Fault answer。它有一个让我很困惑的错误,特别是因为其他结果表明分钟模数步长应该等于零。我终于找到了this manual page,它给了我答案。结果,我能够评论现在已修复的服务器故障答案。我不记得用于查找 IBM 页面的实际搜索词。
  • 感谢@toxalot,工作非常出色,我希望我们能授予您“不知疲倦的调查员”徽章! :P
  • 哈哈。我需要每 10 分钟运行一次作业(偏移 5)并且真的不想使用逗号分隔的列表,所以我决心找到答案。
  • CPanel 似乎不喜欢这样 :(
【解决方案2】:

当然!

5,25,45 * * * * /your/cron

【讨论】:

  • 谢谢。我最终这样做了,希望有一个更优雅的解决方案。
  • 有时简单的解决方案更好,因为它易于阅读和理解。我喜欢知道5-59/20 是可能的,但5,25,45 的优势在于它的作用立即非常清楚。
  • 只有当你的步幅足够大时
  • 这是一个更好的例子。了解工作何时开始需要 0 认知负荷。
【解决方案3】:

你可以试试:*/5 * * * * sleep N; your job

【讨论】:

  • 我认为这并没有什么问题——事实上,这与 certbot 的 cron 作业如何实现有助于保持服务器负载平衡的随机偏移非常相似。当然不值得所有这些反对
  • 这让我想知道如何随机睡几秒。 sleep `shuf -i 1-100 -n 1` 成功了。
  • 该死,@Laizer 你让我又学到了一些东西! (谢谢!)
猜你喜欢
  • 2013-11-27
  • 2018-07-22
  • 2014-08-07
  • 2022-07-07
  • 2020-02-23
  • 2017-10-15
  • 2018-02-18
  • 2022-12-18
  • 1970-01-01
相关资源
最近更新 更多