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