cron表达式的位数
cron表达式有5位 (Linux中的crontab命令中就是5位)、6位、7位之分,不同位数之间以空格分隔
位数
|
每位的含义
|
5位:* * * * *
|
分、时、天、月、周
|
6位:* * * * * *
|
秒、分、时、天、月、周
|
7位:* * * * * * *
|
秒、分、时、天、月、周、年
|
在大部分情况下会省略年这一位,成为6位,再省略秒,就成为5位。
注意:Linux中的crontab表达式只有5位。
常见的特殊符
*:匹配该域的任意值
-:表示范围
例如:0 0 9-17 * * * 每天朝九晚五时间内的0分0秒触发
/: 时间间隔,用来指定数值的增量。
a/b表示从a开始每隔时间b,例如:5/10 * * * * * 表示每一分钟的5秒、15秒、25秒... 触发。
在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟。
在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样
,:枚举值
例如:0 0 9,18 * * ? 在每天9点和下午6点整触发
?: 仅被用于天(月)和天(星期)两个子表达式,表示不指定值
当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”
例子
以5位的cron表达式举例:
0 8 * * * 每一天的8点执行任务
0 0-8 * * * 每一天0-8点每小时执行一次任务
0 0-8/2 * * * 每一天0-8天每2小时执行一次任务
0 0,2 * * * 每一天0点和2点执行一次任务
参考文章
cron表达式小白入门教程cron的介绍与使用 - 知乎 (zhihu.com)