Spring批处理Cron表达式:每3小时运行一次
Posted
技术标签:
【中文标题】Spring批处理Cron表达式:每3小时运行一次【英文标题】:Spring batch Cron expression: to run every 3 hours 【发布时间】:2012-09-20 05:16:48 【问题描述】:我希望我的春季批处理作业每 3 小时运行一次
我使用了表达式 * * */3 * * ?
这在可以被 3 整除的时间开始工作,例如假设服务器在下午 2 点启动,作业仅在下午 3 点开始执行 - 到目前为止一切顺利,但作业每秒都在开始!是因为我在第一个位置使用了*吗?
我试过0 0 */3 * * ?
,但它出错了。实现这一目标的最佳方法是什么?
【问题讨论】:
【参考方案1】:使脚本每 3 小时运行一次的正确语法如下。
0 0 0/3 * * ?
【讨论】:
Spring cron 作业需要 6 位而不是 5 位【参考方案2】:格式是
秒、分、小时、日、月、工作日
所以正确的 cron 表达式应该是
0 0 */3 * * *
如果这不起作用,您收到的确切错误消息是什么?
【讨论】:
0/3和*/3有什么区别? 0/3 和 */3 有什么区别? * 表示该字段中的每个可能值。 ?意味着你不关心价值。当您有两个可能相互矛盾的字段时使用它。 所以我认为 */3 是自服务器启动以来每 3 小时一次,而 0/3 是每 3 小时一次,其中小时可被 3 整除;所以凌晨 3 点、6 点、9 点、12 点、3 点、6 点、9 点、12 点。如果有人能确认那就太好了。 好的,我刚刚运行了一项工作:0 0 0/6 * * * 每 6 小时尝试一次,它确实有效,它似乎在服务器启动后每隔 6 小时运行一次。我在下午 5 点 50 分将其退回,工作在晚上 11 点、上午 5 点、上午 11 点运行。在这种情况下,我猜测 */6 将在服务器启动后每 6 小时运行一次,例如晚上 11:50、早上 5:50 等等。所以它们都可以工作,但 0/6 是第 6 个整小时,而 */6 正好是每 6 小时一次。以上是关于Spring批处理Cron表达式:每3小时运行一次的主要内容,如果未能解决你的问题,请参考以下文章
cron表达式怎么实现“00:15-23:57每5分钟运行一次”?