以下cron表达式是否每45分钟一次?

时间:2013-01-25 08:10:13

标签: cron

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

e.g。 10:00,10:45,11:30,12:15,等等。

*/45 * * * *

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

2 个答案:

答案 0 :(得分:14)

怀疑(编辑:我现在很确定)它不能做你想做的事情:字段是分开的,*/45分钟只不过是{ {1}}。如果0,45没有完成工作,我会使用以下三个条目:

*/45

如果您查看vixie cron源中的0,45 0-23/3 * * * 30 1-23/3 * * * 15 2-23/3 * * * 文件,您会注意到每个条目的每个字段都由entry.c解析并表示为位图允许的字段值。这几乎排除了任何“智能”解释,因为get_list*/45的区别在此阶段丢失了......但是有一个0,45标志,设置在{{{}的存在1分钟内(包括MIN_STAR)。因此,我们查看*,一个检查*/45的地方,以了解它与我们的问题无关。现在我们确定cron.c表示“每小时每隔45分钟 ”:0:00,0:45,1:00,1:45等等。

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

  

星号后也允许步骤,所以如果你想说   “每两个小时”,只需使用“* / 2”

我们很幸运有一个24小时工作日,包含甚至数小时,“从每天0点开始每两个小时”和“每两小时一般”无法区分。太糟糕了,手册没有足够的记录非平凡的案例,给人的印象是MIN_STAR意味着每22个小时。它不是。带步长的星号只是在使用它的字段中的值列表的简写;它不与其他领域互动。

答案 1 :(得分:0)

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