cron触发器立即启动,然后在时间间隔后运行

时间:2016-02-19 17:09:07

标签: java cron cron-task cronexpression crontrigger

我有一个要求,其中我写了一个实用程序,它需要立即触发cron触发器,然后经过30或40分钟的定期间隔。现在我的表情就像这个0 0/40 * * *?但它在开始申请40分钟后开始触发。在java中实现上述场景的表达方式或编程方式应该是什么。

2 个答案:

答案 0 :(得分:1)

Cron没有每40分钟运行一次作业的功能。事实上*/40 * * * *  将在每小时的第40分钟,然后在每小时的第59分钟结束时运行工作,依此类推。因此,工作之间的间隔将是40分钟,然后是20分钟,依此类推。原因是40不能分开60。

40 * * * *将在每小时40分钟(每小时一次)运行。

另一方面,

*/30 * * * *确实会每30分钟运行一次,因为60 mod 30 = 0

如果您真的想在每40分钟运行一次工作,则可能需要使用一些更高级的调度程序,例如 fcron http://fcron.free.fr/)。该调度程序真正支持该功能和其他一些很酷的功能。

回答有关立即触发作业的问题,然后我建议您在下一分钟编写作业,并在脚本内部维护计数器,并允许脚本只运行一次。在脚本执行之后,它可以智能地从cron中删除自己。

答案 1 :(得分:0)

您可以按自己的方式设置cron运行。您只需要获取小时的当前分钟,并将cron设置为在该分钟开始触发。因此,例如,如果您希望cron在每小时的20分钟开始运行并每30分钟运行一次,则可以设置以下内容:

20-59/30 * * * *

这意味着cron将在每小时的20分钟触发一次,然后在30分钟内再次触发(因此,在第50分钟触发)。