【问题标题】:Spring batch Cron expression: to run every 3 hoursSpring批处理Cron表达式:每3小时运行一次
【发布时间】:2012-09-20 05:16:48
【问题描述】:

我希望我的春季批处理作业每 3 小时运行一次

我使用了表达式 * * */3 * * ? 这在可以被 3 整除的时间开始工作,例如假设服务器在下午 2 点启动,作业仅在下午 3 点开始执行 - 到目前为止一切顺利,但作业每秒都在开始!是因为我在第一个位置使用了*吗?

我试过0 0 */3 * * ?,但它出错了。实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: spring cron spring-batch


    【解决方案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 小时一次。
    猜你喜欢
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多