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)​

​​