cron表达式详解

目录

cron表达式的格式:

常用符号说明:

表达式中的【?】即:关于【日期】与【星期几】的说明

补充说明:

举例:


cron表达式的格式:

cron表达式一般为6位或者7位,多的一位就是最末尾的年分,可省略不写,每一位对应的时间为:

【秒】【分】【时】【日】【月】【周几/星期几】【年(可省略)】

常用符号说明:

【*】    表示任意值都满足触发条件

【,】 表示列表项目的分割,如 秒数中设置 1,3,17,则表示秒数为1,3,17时满足触发条件

【-】 表示连续的列表范围,如 秒数中设置 1-5,则表示秒数为1到5时,均满足触发条件

【/】 正常的用法为 x/y,x表示触发的起始数值,y表示后续间隔,如 秒数中设置 5/20,则表示从第5秒开始触发,然后每隔20秒再循环触发(25、45,下次循环5、25、45…)

示例:

0 0 10,14,18 * * ? 每天10、14、18点触发任务
0 0/20 9-17 * * ? 每天9-17点,20分钟触发任务
0 * 12 * * ? 每天12:00 - 12:59期间的每1分钟触发
0 0/3 12 * * ? 在每天12:00 - 12:59期间的每3分钟触发
0 0-5 12 * * ? 在每天12:00 - 12:05期间的每1分钟触发
表达式中的【?】即:关于【日期】与【星期几】的说明

在cron表达式中,日期(日)和星期(星期)通常有以下几种解释方式:

  1. 或关系(OR):这是最常见的解释方式,特别是在Unix/Linux系统的标准cron中。如果表达式中的日期或星期任一条件满足,任务就会被触发。例如,如果设置为 29 5 4(即每年5月29日或每周四),那么只要这两个条件中的任何一个达成,任务就会执行。

  2. 与关系(AND):在一些高级调度系统(如Quartz Scheduler)中,可以配置cron表达式的解释方式,使日期和星期必须同时满足才触发任务。这种情况下,只有当日期确实是星期四的时候任务才会执行。

0 0 12 29 5 4 2024 这个表达式为例:

  • Unix/Linux的Cron:通常解释为“在2024年5月29日或2024年的每个星期四”执行,这意味着任务会在5月的每个星期四和5月29日执行,不管那天是不是星期四。
  • Quartz Scheduler:如果配置为精确匹配,这个表达式可能只在2024年5月29日且那天是星期四时触发。如果这一天不是星期四,任务就不会执行。

所以说:【日期】与【星期几】中任何一个设置值(包含 *),另一个尽量使用 来进行屏蔽,此时 的【?】起到屏蔽的作用。

当星期和日期都为【*】或数字时,非法,

当星期和日期都为【?】时,非法

【?】只能出现在【日期】与【星期几】中,且不能同时出现, 比如以下是 每10秒触发任务的表达式

10 * * * * ?  //合法
10 * * * ? *  //合法
10 * * * ? ?  //非法
10 * * * * *  //非法
补充说明:

在cron表达式中,星期字段的解释通常是从0开始,其中0代表星期日。所以,数字0到6分别代表星期日到星期六。

举例:
10 * * * * ? 每10秒触发任务
10 10 * * * ? 每小时的10分10秒触发任务
10 10 1 * * ? 每天1点10分10秒触发任务
0 0 10,14,18 * * ? 每天10、14、18点触发任务
0 0/20 9-17 * * ? 每天9-17点,20分钟触发任务
0 * 12 * * ? 每天12:00 - 12:59期间的每1分钟触发
0 0/3 12 * * ? 在每天12:00 - 12:59期间的每3分钟触发
0 0-5 12 * * ? 在每天12:00 - 12:05期间的每1分钟触发
10 10 1 12 * ? 每月12号1点10分10秒触发任务
10 10 1 ? * 2 每周1的1点10分10秒触发任务
10 10 1 20 10 ? 2021 2021年10月20号1点10分10秒触发任务
10 10 1 * 10 ? 2021 2021年10月每天1点10分10秒触发任务
10 10 1 ? 10 * 2021 2021年10月每天1点10分10秒触发任务
10 10 1 ? 10 7 2021 2021年10月每周6 1点10分10秒触发任务

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值