每 45 分钟执行一次 Cron 表达式
Cron expression to be executed every 45 minutes
我想要一个每 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 12/3 * * ? # 12:00, 12:45, 15:00, 15:45, ...
0 30 13/3 * * ? # 13:30, 16:30, ...
0 15 14/3 * * ? # 14:15, 17:15, ...
0 0/45 * * * ?
其实就是"fire every 45 minutes, starting at minute 0 of every hour".
您声称您当前的输出是 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。希望这对登陆此处寻找答案的人有所帮助!
我想要一个每 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 12/3 * * ? # 12:00, 12:45, 15:00, 15:45, ...
0 30 13/3 * * ? # 13:30, 16:30, ...
0 15 14/3 * * ? # 14:15, 17:15, ...
0 0/45 * * * ?
其实就是"fire every 45 minutes, starting at minute 0 of every hour".
您声称您当前的输出是 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。希望这对登陆此处寻找答案的人有所帮助!