cron表达式介绍

作者: adm 分类: linux 发布时间: 2022-09-18

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表示每月第二个星期二执行任务;

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!