浅谈:cron表达式

编程入门 行业动态 更新时间:2024-10-10 11:25:16

浅谈:cron<a href=https://www.elefans.com/category/jswz/34/1771310.html style=表达式"/>

浅谈:cron表达式

目录

1. cron表达式的结构

2. cron每个域的取值范围

3. cron符号的意义

(1)* 通配符

(2)?

(3)-

(4),

(5)/

(6)#

(7)L

4. 一些常见的实例


1. cron表达式的结构

cron表达式是一个字符串,有5位 (Linux中的crontab命令中就是5位)、6位、7位之分,不同位数之间以空格分隔

位数每位的含义
5位:* * * * *分、时、天、月、周
6位:* * * * * *秒、分、时、天、月、周
7位:* * * * * * *秒、分、时、天、月、周、年

其语法格式为:

"秒域 分域 时域 日域 月域 周域 年域"

在大部分情况下会省略年这一位,成为6位,省略时表示每年。再省略秒,就成为5位。

注意:Linux中的crontab表达式只有5位。

2. cron每个域的取值范围

域名可取值可取符号(仅列部分常用)
秒域0~59的整数  *    -    ,    /
分域0~59的整数  *    -    ,    /
时域0~23的整数  *    -    ,    /
日域1~31的整数  *    -    ,    /    ?    L
月域1~12的整数或JAN~DEC  *    -    ,    /
周域

1~7的整数(星期天为1)或SUN~SAT

对于星期,最好使用英文缩写,更加清晰

  *    -    ,    /    ?    L    # 
年域1970~2099的整数  *    -    ,    /
*    *    *    *    *    *    *
-    -    -    -    -    -    -
|    |    |    |    |    |    |
|    |    |    |    |    |    +----- 年域 (1970 ~ 2099)
|    |    |    |    |    +---------- 周域 (1 ~ 7 或 SUN ~ SAT) (星期天 为1)
|    |    |    |    +--------------- 月域 (1 ~ 12 或 JAN ~ DEC)
|    |    |    +-------------------- 日域 (0 ~ 31)
|    |    +------------------------- 时域 (0 ~ 23)
|    +------------------------------ 分域 (0 ~ 59)
+----------------------------------- 秒域 (0 ~ 59)

3. cron符号的意义

(1)* 通配符

表示可以匹配该域的所有值;

例如,"0 0 13 * * ?"表示每天的13点执行一次。

(2)?

在cron表达式中必须出现且只能出现1次,用在日域或周域上,表示不确定值、不限制值;

它与*的区别是,并不能匹配到该域上的所有值,例如指定了3月份每个周五,那么3月份的周五可能只有4个值;

例如,"0 0 5 6 * ?"表示每个月6日5点钟执行而无论周几,"0 0 5 ? * 3"表示每个周三5点钟执行而无论是几号。

(3)-

表示匹配该域上的一个范围;

例如,"0 30 9-15 ? * *"表示每天的9:30-15:30每小时执行一次,"0 1-5 * ? * 1"表示每周日每个小时的1-5分钟每分钟执行一次。

(4),

表示枚举值;

例如,"0 0 8,16,23 ? * 1,7"表示每个周六日的8点、16点、23点各执行一次。

(5)/

表示起始时间和间隔时间;

例如,"0 0 3/5 * * ?"表示每天3点开始执行,每隔5个小时执行一次,即3点、8点、13点、18点、23点各执行一次,

"*/5 * * * * ?"表示每隔5秒钟执行一次,"0 */1 * * * ?"表示每隔1分钟执行一次。

(6)#

只能用于周域上,#后面的数字表示第几周,如果不存在这个周的值,则不执行;

例如,"0 0 0 ? * 5#2"表示每个月第2个周四零点执行,"15 30 6 ? * 7#5"表示每个月第5个周六6:30:15执行,如果某个月不存在第5个周六,则不执行。

(7)L

只能用于日域或周域,用于日域时表示当月最后一天,用于周域如果前面不加数字表示周六,加数字表示最后一个周值;

例如,"0 0 23 L * ?"表示每月最后一天的23点执行,"0 0 23 ? * L"表示每周六的23点执行,"0 0 23 ? * 3L"表示每月最后一个周二的23点执行。

4. 一些常用实例

 执行时间                cron表达式
 每隔5秒钟执行一次                */5  *  *  *  *  ?
 每隔1分钟执行一次                0  */1  *  *  *  ?
 每天凌晨1点执行一次                0  0  1  *  *  ?
 每天23点55分执行一次                0  55  23  *  *  ?
 每月最后一天23点55分执行一次                0  55  23  L  *  ?
 每周六9点执行一次                0  0  9  ?  *  L
 每月最后一个周五,每隔2小时执行一次                0  0  */2  ?  *  6L
 每月的第三个星期五上午9:15执行一次                0  15  9  ?  *  6#3
 在每天中午12点到12:05期间的每1分钟执行                0  0-5  12  *  *  ?
 表示周一到周五每天上午9:15执行                0  15  9  ?  *  2-6
 表示周一到周五每天上午9:15执行                0  15  9  ?  *  MON-FRI
 每个月的最后一个星期五上午9:15执行                0  15  9  ?  *  6L 
 每天10点,12点,16点 各执行一次                0  0  10,12,16  * * ?
 朝九晚五工作时间内每半小时执行一次                0  0/30  9-17  *  * ?
 每个星期三中午12点执行一次                0  0  12  ?  *  4
 每年三月的星期三的下午2:10和2:44各执行一次                0  10,44  14  ?  3  4 
 每年三月的每周三的14:10分到14:44各执行一次                0  10,44  14  ?  3  WED
 每月的第三个星期五上午10:15执行一次                0  15  10  ?  *  6#3
 每月的第三个星期五上午10:15执行一次                0  15  10  ?  *  FRI#3
 每分钟的第10秒与第20秒都会执行                10,20  *  *  *  * ?
 每月一日凌晨2点30执行一次                0  30  2  1  *  ?

更多推荐

浅谈:cron表达式

本文发布于:2024-02-14 09:53:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1762935.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:表达式   浅谈   cron

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!