Cron如何处理“每隔很久”的工作中的余数


13

如果我这样做:

*/9 * * * * /path/to/wotnot

从09h00开始,任务将在两个小时的什么时间运行

是A:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h03
10h12
10h21
10h30
10h39
10h48
10h57

或B:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h00
10h09
10h18
10h27
10h36
10h45
10h54

Answers:


31

当查看范围时,仅在该列中对其进行解释,因此分钟列中的“ * / 9”表示“每分钟列出,然后选择第九个值”。此选择会在每小时的顶部重置,因此您每小时都会在xx:00,xx:09,xx:18等处重新启动。

也可以将其理解为“每小时每隔九分钟”,这意味着重置是在每小时的最开始。

因此,您将看到的实际行为对应于选项B。


这是似乎真正回答问题的唯一答案。您是否尝试过以确保?
gparent

在过去的10分钟内?否,过去三个月内?是的,虽然不是每隔九分钟间隔一次。
2013年

不明白为什么我会在你什么时候关心,但只有在这样的情况下。谢谢。
gparent 2013年

1
我曾让前同事生气:“不,您没有测试它,您依靠的是错误的记忆!” 在类似的情况下(当然,五分钟后,我证明它仍然有效后,他们便生气了),所以我养成了预先对冲它的习惯。
约翰,

2
测试的第一步是确保您具有与客户相同的品牌和版本(在本例中为Jesse)。到目前为止,我看不出他在使用什么cron的任何线索。(很有可能是Vixie Cron,并且该基本功能可能在该程序的各个版本中都是稳定的。)
Kaz 2013年

22

为了确认约翰的回答,*/n在分钟列中的意思是“当分钟为0 mod n时”。这是一个crontab条目:

*/7 * * * *  date >> /tmp/foo

这是输出:

Thu Jan 10 14:49:01 GMT 2013
Thu Jan 10 14:56:01 GMT 2013
Thu Jan 10 15:07:01 GMT 2013

注意最后两次之间的时间间隔不是 7分钟,因为在nn:56之后,下一次*/7匹配为`nn + 1:07。

是的,我知道那是将来的时间(或者是我发布此信息的时间);我必须相当快地将系统时钟向前驱动才能快速得到答案。


5
+1 :)
Sven
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.