cron 如何处理“每隔一段时间”工作中的余数

Jes*_*sse 13 linux cron

如果我这样做:

*/9 * * * * /path/to/wotnot
Run Code Online (Sandbox Code Playgroud)

任务将在两小时内的什么时间运行,从 09:00 开始

是A吗:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h03
10h12
10h21
10h30
10h39
10h48
10h57
Run Code Online (Sandbox Code Playgroud)

或乙:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h00
10h09
10h18
10h27
10h36
10h45
10h54
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 31

查看范围时,您仅在该列中解释它,因此分钟列中的 '*/9' 表示“每分钟列出一次,然后选择每第九个值”。此选择会在整点结束时重置,因此您每小时都会在 xx:00、xx:09、xx:18 等处重新启动。

它也可以读作“每小时的每九分钟”,暗示在小时的顶部重置。

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

  • 测试的第一步是确保您与客户(在本例中为 Jesse)拥有相同的品牌和版本。到目前为止,我没有看到任何关于他正在使用的 cron 的线索。(很可能是 Vixie Cron,这个基本功能在该程序的各个版本中可能是稳定的。) (2认同)

Mad*_*ter 22

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

*/7 * * * *  date >> /tmp/foo
Run Code Online (Sandbox Code Playgroud)

这是输出:

Thu Jan 10 14:49:01 GMT 2013
Thu Jan 10 14:56:01 GMT 2013
Thu Jan 10 15:07:01 GMT 2013
Run Code Online (Sandbox Code Playgroud)

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

是的,我知道那些时间是在未来(或者当我发布这篇文章时);我不得不相当快地推动系统时钟向前以获得快速答案。

  • +1 表示努力:) (5认同)