cron 语法,cron表达式正则表达式,详解cron表达式

cron 语法,cron表达式正则表达式,详解cron表达式

Cron表达式是由5或6个空格分隔的字符串,分为6或7个字段,每个字段代表一个含义。接下来,通过本文,我们将详细介绍cron表达式的内容。有兴趣的朋友来看看吧。

Cron表达式是由5或6个空格分隔的字符串,分为6或7个字段,每个字段代表一个含义。Cron有以下两种语法格式:

(1)秒分钟小时日月日星期年

(2)秒分钟小时日月日周

一.结构

玉米从左到右(空格分隔):秒、分、小时、月中的日、周中的日和年。

二、每个字段的含义

领域

允许值

允许的特殊字符

秒(秒)

从0到59的整数

,-*/四个字符

分钟(分钟)

从0到59的整数

,-*/四个字符

小时(小时)

从0到23的整数

,-*/四个字符

日期(月日)

从1到31的整数(但是您需要考虑一个月中的天数)

,- * ?/L W C八个字符

月(月)

1到12或1-12月的整数

,-*/四个字符

周(一周)

1到7之间的整数或SUN-SAT (1=SUN)

, - * ?/L C #八个字符

年份(可选,留空)(年份)

1970~2099

,-*/四个字符

每个字段都使用数字,但也可以出现下列特殊字符,它们表示:

(1)*:表示与该字段匹配的任何值。如果*用于分钟域,则表示每分钟都会触发事件。

(2)?只能在两个域中使用:DayofMonth和DayofWeek。它也匹配域的任何值,但它不匹配。因为DayofMonth和DayofWeek会互相影响。比如你想在每个月的20号触发排班,不管20号是什么日子,都只能用下面的写法:13 13 15 20 *?最后一个只能用?但不能用*。如果使用*则意味着不管是星期几都会触发,实际上并不是这样。

(3)-:表示范围。例如,分钟域中使用5-20,这意味着从5分钟到20分钟,每分钟触发一次。

(4)/:表示在起始时间触发,之后每隔固定时间触发一次。例如,如果在分钟域中使用5/20,则意味着每5分钟触发一次,而25、45等。将分别触发一次。

(5),表示列出枚举值。例如,如果您在分钟域中使用5,20,这意味着它将在5分钟和20分钟的每一分钟被触发。

(6)L:表示最后只能出现在DayofWeek和DayofMonth字段中。如果在DayofWeek域中使用5L,则意味着在最后一个星期四触发。

(7)W:表示有效工作日(周一至周五),只能出现在DayofMonth域中。系统将在离指定日期最近的有效工作日触发事件。比如在DayofMonth使用5W,如果5号是周六,那么在最近的工作日触发:周五,也就是4号。如果5日是周日,6日(周一)触发;如果5号落在周一到周五的某一天,则在5号触发。另一方面,W的最新搜索不会跨月。

(8)LW:这两个字可以连用,表示在一个月的最后一个工作日,即最后一个星期五。

(9)#:用于确定每月的星期几,只能出现在DayofMonth字段中。例如,在4#2中,它表示一个月的第二个星期三。

  三、常用表达式例子

(1)0 0 2 1 * ?*表示在每月1日凌晨2: 00调整任务。

(2)0 15 10 ?*周一至周五是指周一至周五每天上午10:15执行作业。

(3)0 15 10 ?6L 2002-2006表示2002-2006年每个月的最后一个星期五将在上午10:15执行。

(4)0 0 10,14,16 * * ?每天上午10点,下午2点和4点。

(5)0 0/30 9-17 * * ?在9-5个工作时间内,每半小时一次

(6)0 0 12 ?*星期三是指每周三中午12点。

(7)0 0 12 * * ?每天中午12点触发

(8)0 15 10 ?* *每天上午10:15触发

(9)0 15 10 * * ?每天上午10:15触发。

(10)0 15 10 * * ?*每天上午10:15触发

(11)0 15 10 * * ?在2005年每天上午10:15触发。

(12)0 * 14 * * ?每天下午2点到2点59分之间每分钟触发一次。

(13)0 0/5 14 * * ?每天下午2点到2点55分之间每5分钟触发一次。

(14)0 0/5 14,18 * * ?每天下午2点到2点55分和下午6点到6点55分之间每5分钟触发一次。

(15)0 0-5 14 * * ?每天下午2点到2点05分之间每分钟触发一次。

(16)0 10,44 14 ?每周三的下午2:10和2:44触发Wed。

(17)0 15 10 ?*周一至周五在上午10:15触发

(18)0 15 10 15 * ?每月15日上午10:15触发

(19)0 15 10 L *?在每月最后一天的上午10:15触发

(20)0 15 10 ?* 6L在每月最后一个星期五的上午10:15触发

(21)0 15 10 ?* 6L 2002-2005 2002在2002年到2005年每个月的最后一个星期五上午10:15触发。

(22)0 15 10 ?* 6#3在每月的第三个星期五上午10:15触发

注意:

(1)一些子表达式可以包含一些范围或列表。

例如,子表达式(日(周))可以是“周一至周五”、“周一、周三、周五”和“周一至周三、周六”

“*”字符代表所有可能的值。

因此,“*”在子表达式(月)中表示每个月,“*”在子表达式(日(周))中表示一周中的每一天。

“/”字符用于指定数值的增量。

例如,子表达式(分钟)中的“0/15”表示从第0分钟开始每隔15分钟。

子表达式(分钟)中的“3/20”表示从第3分钟开始每20分钟一次(与“3,23,43”含义相同)。

"?"字符仅用于日(月)和日(周)子表达式中,表示没有指定值。

当两个子表达式中的一个被赋值时,为了避免冲突,另一个子表达式的值需要被设置为“?”

“L”字符仅在日(月)和日(周)子表达式中使用,它是单词“最后”的缩写

但是它在两个子表达式中的含义是不同的。

在日(月)子表达式中,“L”表示一个月的最后一天。

在day (week)自我表述中,“L”的意思是一周的最后一天,也就是SAT。

如果“L”前有具体内容,就会有其他含义。

例如,“6L”表示本月倒数第六天,“FRIL”表示本月最后一个星期五。

注意:使用“L”参数时,不要指定列表或范围,因为这会导致问题。

总结

以上是边肖对cron表达式的详细解释。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!

cron 语法,cron表达式正则表达式,详解cron表达式