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

cron trigger that starts immediately and then runs after time interval

我有一个要求,其中我正在编写一个实用程序,该实用程序要求 cron 触发器立即触发,然后在 30 或 40 分钟的固定间隔后触发。现在我的表情是这样的 0 0/40 * * * ?但它会在应用程序启动 40 分钟后启动触发器。在 java 中实现上述场景的表达式或编程方式应该是什么。

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

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

*/30 * * * * 另一方面确实会 运行 每 30 分钟执行一次作业,因为 60 mod 30 = 0

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

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

您可以按照自己的方式设置 cron 运行。您只需要获取小时的当前分钟并将 cron 设置为在那一分钟开始触发。所以,如果,比如说,你想要一个 cron 在每小时的第 20 分钟开始并且 运行 每 30 分钟你可以设置如下:

20-59/30 * * * *

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