13

我愿意每 45 分钟运行一次脚本(不是每小时的第 45 分钟)

例如 10:00、10:45、11:30、12:15 等。

*/45 * * * *

我不确定这是正确的表达方式。

4

2 回答 2

14

怀疑(编辑:我现在很确定)它没有做你想做的事:字段是分开的,*/45几分钟之内只不过是0,45. */45如果不做这项工作,我会使用以下三个条目:

0,45  0-23/3 * * *
30    1-23/3 * * *
15    2-23/3 * * *

如果您查看entry.cvixie cron 源中的文件,您会注意到每个条目的每个字段都被解析get_list并表示为该字段允许值的位图。这几乎排除了任何“智能”解释,因为在这个阶段已经失去了*/45和的区别0,45......但是有一个MIN_STAR标志,设置*在几分钟内(包括*/45)。所以我们看一下cron.c,一个MIN_STAR被检查的地方,以了解它与我们的问题无关。现在我们确定这*/45意味着“每小时的每 45 分钟”:0:00、0:45、1:00、1:45 等等。

这里有两个答案自信地说相反,引用手册中的一段不幸的段落:

星号后也允许执行步骤,因此如果您想说“每两个小时”,只需使用“*/2”

我们很幸运有一个 24 小时的一天,包含偶数小时,使得“每天从 0:00 开始每两个小时”和“通常每两个小时”无法区分。太糟糕了,手册没有深入到记录不平凡的案例,给人的印象* */22是每 22 小时一次。它不是。带有步骤的星号只是使用它的字段中值列表的简写;它不与其他字段交互。

于 2013-01-25T08:28:10.877 回答
0

在 cron 的基本计时,您的系统每分钟检查一次以查看是否有任何 cronjobs 可以运行。它会查看你的 crontab,如果该运行了,噗,它运行了!但是每 45 分钟是一个间隔,它总是会在钟面上达到 15 分钟的标记。例如从零开始,第一个是 0:45。接下来将是从零开始的 90 分钟,或 1:30,下一个将是 2:15... 您可以很容易地看到您想要执行脚本的每个实例的时间,分针将在 12、3、 6 或 9。如果您每 15 分钟执行一次脚本,并检查小时是否正确,则可以执行您的脚本。您可能会使用表格,或者也可能使用模数功能。干杯!

于 2017-10-10T17:10:49.140 回答