每天运行两次工作的Cron表达式,时间不同?

15

我有一个工作需要在每天不同的时间执行两次,例如10:00和15:30。如何实现这一点?

我感到困惑,因为这两个时间的分钟数不同。对于11:00和15:00来说很容易,因为这两个时间的分钟部分相同,但对于不同的分钟部分,使用cron是否可行?

提前感谢您的回答,对于这个愚蠢的问题请见谅。


仅有一个工作的原因是什么? - lipponen
无法使用单个触发器完成此操作... 0 0,30 10,15 * * ? 将在1000、1030、1500和1530触发,0 0 10,15 * * ? 将在1000和1530触发,0 30 10,15 * * ? 将在1030和1530触发。如果选择第一种选项,您可以向代码添加一些逻辑以跳过需要跳过的运行。 - Dean Kuga
4个回答

9
尝试以下方法,你可以在一个表达式中得到最接近的结果。
0 0 10,15/12 * * ?

这将在早上10点和下午3点运行。


3
为什么要除以12? - fedorqui
/12 - 意味着它每12小时运行一次,即每天两次。 - jjj
2
是的,我知道“/12”的作用,我的观点是15/12没有任何意义。 - fedorqui
这段代码无法在1000和1500运行,因为“/”用于增量,而这种写法会导致cron表达式无效。 - Dean Kuga
带着/不带着“12”意思一样。 这个“15/12”的意思是,将在每天从15点到23点每12小时运行一次。 15然后是27(这没有任何意义)。0 0 10,15 * *尽管提问者不想要这个。 - Satish Patro
显示剩余2条评论

8

您可以为每个任务设置值:

0 10 * * * job

30 15 * * * job

以下是更多信息:

*    *    *    *    *  command to be executed
┬    ┬    ┬    ┬    ┬
│    │    │    │    │
│    │    │    │    │
│    │    │    │    └───── day of week (0 - 7) (0 or 7 are Sunday, or    use names)
│    │    │    └────────── month (1 - 12)
│    │    └─────────────── day of month (1 - 31)
│    └──────────────────── hour (0 - 23)
└───────────────────────── min (0 - 59)

cron的Wikipagehttps://zh.wikipedia.org/wiki/Cron


谢谢您的评论。我知道这一点,但我想要一个单独的cron表达式,而不是两个不同的表达式。 - Ravi Parmar
5
在这种情况下,我真的建议使用两个单独的cron条目。这比某些愚蠢的hack更容易维护。 - lipponen

2

定时表达式不能同时指定多个特定时间,例如上午10:00和下午3:30。但是您可以通过在每个表达式中指定一个时间来使用多个表达式,例如0、10 * * *表示上午10:00,另一个表达式如此30 15 * * * 表示下午3:30。根据Cron表达式约定,您不能在同一表达式中指定多个特定时间。

不要尝试这样的表达式0,10 10,15 * * *,它会在以下时间执行:

上午10:00 上午10:30 下午3:00 下午3:30


-1
我尝试使用 "0 1,6 * * ? *" 表达式来安排每天在凌晨1点到6点之间运行的任务。因此,对于您的请求,即安排10:00和15:00时间,我相信以下 cron 表达式应该可以工作。请尝试并告诉我结果。 "0 10,15 * * ? *"

你好@Shammu,欢迎来到StackOverflow。这并没有回答问题。Ravi实际上是想在10:00和15:30设置一个cron。文章中甚至提到对于11和15很容易配置。 - Juliano Costa
明白了,我忽略了分钟。我相信只有两个不同的表达式可以实现,正如Lipponen所说。如果分钟也相同,则可能只需要一个表达式。感谢@JulianoCosta的审查。 - Shammu M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接