【问题标题】:How to execute a cron expression for every 2.5 min如何每 2.5 分钟执行一次 cron 表达式
【发布时间】:2019-02-18 08:20:12
【问题描述】:

我想创建一个 cron 表达式,它将每小时每 2.5 分钟运行一次调度程序。例如每小时2.5min、5.0min、7.5min、10.0min等。 我正在使用 Spring 创建调度程序。我尝试了各种组合,但没有任何效果。其中之一如下,但它不起作用。

@Scheduled(cron = "*/30 */2 * * * *")

提前致谢。

【问题讨论】:

标签: cron spring-scheduled


【解决方案1】:

这应该适合你

 0 0/5 0 ? * * *
 30 2/5 0 ? * * *
  1. 从每天凌晨 00 分开始,每 5 分钟第二次 :00 开始
  2. 从每天凌晨 02 分开始,每 5 分钟每 5 分钟一次

在这种情况下,您是对的,您需要使用示例中的表达式两次安排您的任务。

【讨论】:

  • 嗨@sylwester - 感谢您的调查。我试过你的表达方式,但它只会在 12:00 AM 运行。 Fri Sep 14 00:00:00, Fri Sep 14 00:00:30, Fri Sep 14 00:02:30, Fri Sep 14 00:04:00, Fri Sep 14 00:04:30, Fri Sep 14 00:06:00 等。我认为 12:00 AM 正在发生,因为小时为 0。所以我改变并尝试以0/30 0/2 * ? * * * 运行expr 并得到以下结果。 Thu Sep 13 17:14:00, Thu Sep 13 17:14:30, Thu Sep 13 17:16:00, Thu Sep 13 17:16:30, Thu Sep 13 17:18:00, Thu Sep 13 17:18:30, Thu Sep 13 17:20:00, Thu Sep 13 17:20:30 但是也没用。
  • 这个答案似乎是使用带有 seconds 参数的 cron 版本 - 我确信它们存在,但我怀疑 OP 的版本是“仅分钟”
【解决方案2】:

有被固定在 30 秒上的危险。我的问题是我需要每个月检查 18000 条记录的更新 ~ 每 2.5 分钟 1 条记录。在我意识到准确性并不重要之前,我花了太多时间尝试在 02:32:30 运行工作的技巧。

在我的情况下,我意识到我可以每 2 分钟执行一次,每 25 天而不是每 31 天更新我的完整数据库。

或者,我可以每 5 分钟运行 2 个 cron 作业。首先是 2 分钟的间隔,然后是 3 分钟的间隔。

02:30 02:32 02:35 02:37 02:40 02:42 02:45 02: 47

我的观点是,当 cron 作业处于活动状态时,它会在看不见的情况下运行。显然,每个人都有自己的具体问题,但在引入复杂性之前,请考虑是否有必要。只要作业执行,它运行的确切时间真的很重要吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-23
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 2010-10-19
    • 1970-01-01
    • 2021-09-03
    相关资源
    最近更新 更多