Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每45分钟执行一次Cron表达式_Cron_Quartz.net - Fatal编程技术网

每45分钟执行一次Cron表达式

每45分钟执行一次Cron表达式,cron,quartz.net,Cron,Quartz.net,我想要一个每45分钟触发一次的cron表达式 根据文档,我创建了这个0 0/45***?表达式 但它是按12:00,12:45,13:00,13:45,14:00的模式发射的 但我期望和想要的是在12:00,12:45,13:30,14:15被解雇 我遗漏了什么?如果需要,可以将间隔更改为*/15。但实际上每45分钟运行一次: * * * * * (( $(( $(date '+(\%M+\%H*60)')\%45 )) )) || date >> /tmp/cron_45.out

我想要一个每45分钟触发一次的cron表达式

根据文档,我创建了这个
0 0/45***?
表达式

但它是按12:00,12:45,13:00,13:45,14:00的模式发射的

但我期望和想要的是在12:00,12:45,13:30,14:15被解雇


我遗漏了什么?

如果需要,可以将间隔更改为*/15。但实际上每45分钟运行一次:

* * * * * (( $(( $(date '+(\%M+\%H*60)')\%45 )) )) || date >> /tmp/cron_45.out 2>&1

Cron并不是用来解决这些问题的。它定义了触发的确切日期和时间,而不是间隔。改用简单的时间表:

TriggerBuilder.Create()
  .StartAt(startDate)
  .WithSimpleSchedule(
    simpleScheduleBuilder => simpleScheduleBuilder.WithIntervalInMinutes(45))
  .Build();
编辑: 它可以是如上所述的简单计划,也可以是多个cron触发器(Quartz作业可以有多个触发器):


0 0/45***?
实际上意味着“每45分钟开火一次,从每小时的第0分钟开始”

您声称当前输出为12:00、12:45、13:00、13:45、14:30,这是有意义的,但最后一次14:30除外

作业在小时开始时(12:00)触发,45分钟后(12:45)再次触发,然后重复,从0分钟(13:00)开始触发下一个作业,然后在小时结束后45分钟(13:45)触发另一个触发器

我不确定它为什么会在14:30突然启动,但如果您将cron输入更改为


0 45***?
我相信它会像你想的那样工作,每45分钟发射一次

这是一项可能对您有所帮助的工作。每15分钟创建一个计时器

0 0/15 * * * ? *

并保留一个用作计数器的变量,并在每次触发计时器时递增。当计数器达到3时,触发您的方法并将计数器重置为0。希望这有助于在这里寻找答案的人

不幸的是,我正在增强一个项目,以前的开发人员并没有实现对简单时间表的支持。这将是太多的工作,我添加支持简单的时间表。我已经编辑了答案。我看不出用一个cron触发器就可以做到这一点。14:30是个错误。我已经修好了。谢谢你指出。但是你的老太婆也不工作了。它产生了这个模式11:45,12:45,1:45,2:45。。。看来没有办法了,唯一的解决办法就是使用一个简单的时间表。简单的解决办法,就行了
0 0/15 * * * ? *