cron表达式介绍
cron表达式的位数#
cron表达式有5位 (Linux中的crontab命令中就是5位)、6位、7位之分,不同位数之间以空格分隔
位数 每位的含义 5位:* * * * * 分、时、天、月、周 6位:* * * * * * 秒、分、时、天、月、周 7位:* * * * * * * 秒、分、时、天、月、周、年
在大部分情况下会省略年这一位,成为6位,再省略秒,就成为5位。
注意:Linux中的crontab表达式只有5位。
=
例子#
以5位的cron表达式举例:
0 8 * * * 每一天的8点执行任务 0 0-8 * * * 每一天0-8点每小时执行一次任务 0 0-8/2 * * * 每一天0-8天每2小时执行一次任务 0 0,2 * * * 每一天0点和2点执行一次任务
举例:
以6位的cron表达式举例:
"0 0 8 * * *" 表示每天上午8点执行任务。 "0 0/30 9-17 * * *" 表示在每天9点到17点之间,每隔30分钟执行一次任务。 "0 0 12 ? * WED" 表示每周三中午12点执行任务。 "0 0 10 L * ?" 表示每个月的最后一天上午10点执行任务。 "0 0 3-5 * * *" 表示每天凌晨3点到5点之间,每小时执行一次任务。 "0 15 10 L * ?" 表示每个月的最后一天上午10:15分执行任务。
特殊符号:
*(通配符):匹配任意值,例如* * * * * ?表示每秒执行一次任务。 ,(列表):用于指定多个取值,例如0 0 6,12,18 * * ?表示每天6点、12点和18点执行任务。 -(范围):用于指定一个范围内的取值,例如0 0 9-17 * * MON-FRI表示周一至周五的9点到17点之间每小时执行一次任务。 /(步长):用于指定一个取值的步长,例如0 */30 * * * ?表示每30分钟执行一次任务。 ?(无意义占位符):表示不指定值,只能用在[日]和[周]两个域。在不需要关心当前域时使用。例如要在每月 8 号触发任务,但不关心是周几,我们可以这么设置 0 0 0 8 * ?。 #(日历偏移量):用于指定某个月份的第几个周几,例如0 0 0 ? * 3#1表示每个月的第一个星期三执行任务。 L(Last):表示某个指定时间内的最后一天,比如0 0 L * * ?表示每月的最后一天执行任务。 W(Weekday):表示距离指定日期最近的工作日,比如0 0 0 15W * ?表示当月第15个工作日执行任务。如果15号是工作日,则执行任务;如果15号是周末,则任务会提前到最近的工作日即14号执行。 C(Calendar):表示距离指定日期最近的那个日子,比如0 0 0 1W * ?表示当月的第一个工作日执行任务。如果1号是工作日,则执行任务;如果1号是周末,则任务会延后到最近的工作日即2号执行。 其中,W和C的区别在于W只能用在日字段上,表示距离指定日期最近的工作日; 而C可以用在月、日、星期字段上,表示距离指定日期最近的那个日子。同时,C还可以与星期字段结合使用,比如0 0 0 ? * 2#2表示每月第二个星期二执行任务;