cron定时器用法,定时器cron表达式在线解析

写定时器时用到,记录一下:Cron表达式是一个字符串,字符串以5或6个空格隔开,分开工6或7个域,每一个域代表一个含义,Cron有如下两种语法 格式: Seco

在编写和记录计时器时使用。

Cron 表达式是字符串,由5 或6 个空格分隔,每个字段代表两种语法:

格式:

秒分钟小时某月某日某月某日年或

秒分钟小时某月某日某月某日某周某日

每个字段中可以显示的字符有:

代码

Seconds: 可以显示- */4 个字符,有效范围为0 到59 之间的整数。

Minutes: 可以显示- */4 个字符,有效范围为0 到59 之间的整数。

hours: 可以显示- */4 个字符,有效范围为0 到23 之间的整数。

DayofMonth: 显示为- */? L W C 8 个字符。有效范围是0 到31 之间的整数。

Month:可以用-*/4个字符显示。有效范围是1 到12 或JAN 到DEc 之间的整数。

DayofWeek: 显示为四个字符:- */? L C #。有效范围是1 到7 之间的整数,或两个范围:SUN-SAT。 1 表示星期日,2 表示星期一。

可以显示年份: – */4 个字符,有效范围为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 和20:00 触发一次。 ETC

(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 指的是某个月的第二个星期三。

让我举几个例子:

0 0 2 1 * ? * 表示将任务安排在每月1 号凌晨2 点

0 15 10 ? * MON-FRI 表示作业在周一至周五每天上午10:15 运行。

0 15 10 ? 6L 2002-2006 表示作业10:15 在200 到2006 年每个月最后一个星期五上午的运行。

91 Linux

一个cron 表达式至少包含六个(也可能是七个)时间元素,并用空格分隔。

为了,

秒(0~59)

分钟(0~59)

时间(0-23)

该月的第几天(0-31,但必须考虑该月的天数)

月份(0~11)

日(周)(1-7 1=SUN 或SUN、周一、周二、周三、周四、周五、周六)

7.年份(1970-2099)

每个元素可以是一个值(如6)、连续区间(9 到12)、区间(8 到18/4)(/表示每4 小时)、列表(1, 3, 5)或您可以指定。

“天”和“星期几”这两个元素是互斥的,因此必须设置其中之一。

0 0 10、14、16 * * 每天上午10 点、下午2 点、下午4 点

0 0/30 9-17 * * ? 工作时间上午9 点至下午5 点每30 分钟一班

0 0 12 ? * WED 表示每周三中午

“0 0 12 * * ?”每天中午触发

每天早上在10:15 触发“0 15 10 ? * *”。

“0 15 10 * * ?”每天早上在10:15 触发。

“0 15 10 * * ? *”每天早上在10:15 触发。

2005 年每天早上在10:15 上触发“0 15 10 * * 2005”

每天下午2 点到下午2:59 每分钟触发一次“0 * 14 * * ?”

每天下午2 点至2:55 点每5 分钟触发一次“0 0/5 14 * * ?”

‘0 0/5 14,18 * * ?’ 从下午2 点到2:55 每5 分钟触发一次,从下午6 点到6:55 每5 分钟触发一次

每天下午2 点到2:05 点每分钟触发一次“0 0-5 14 * * ?”

“0 10,44 14 ? 3 WED”在三月份的每个星期三下午在2:10 和2:44 触发。

“0 15 10 * MON-FRI”在周一至周五早上触发10:15。

‘0 15 10 15 * ?’ 每月15号上午由10:15触发

‘0 15 10 L * ?’ 每月最后一天早上触发10:15

每月最后一个周五上午触发“0 15 10 ? * 6L” 10:15

‘0 15 10 ? * 6L 2002-2005’ 在2002 年至2005 年每月的最后一个星期五上午触发10:15

“0 15 10 ? * 6#3” 每月第三个星期五上午触发10:15

某些子表达式可以包含范围或列表

示例:子表达式(天(周))变为“MON-FRI”、“MON、WED、FRI”、“MON-WED、SAT”。

‘*’字符代表所有可能的值

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

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

示例:子表达式(分钟)中的“0/15”表示从0 分钟开始,每15 分钟一次。

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

‘?’ 字符仅在两个子表达式中使用:日(月)和日(周),以指示未指定值。

如果为两个子表达式之一赋值,则另一个子表达式的值必须设置为“?”以避免冲突。

“L”字符仅在日(月)和日(周)子表达式中使用,并且是单词“last”的缩写。

然而,这两个子表达式具有不同的含义。

天(月)子表达式中的“L”表示该月的最后一天

在天(周)的自我表达中,“L”代表一周的最后一天,即SAT

如果“L”前面有特定的东西,则有其他含义

例如:“6L”表示本月第6 日至最后一天,“FRIL”表示本月最后一个星期五

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

字段允许值允许特殊字符

秒0-59, – * /

分钟0-59,- * /

时间0-23,-*/

日期1-31,- */L W C ?

1 月至12 月或1 月至12 月,- * /

周日1-7 或周日至周六,- */L C #

年份(可选)留空,1970-2099,- */

请注意, 天和周是其中之一。

? 代表必填

*:代表每年

秒分钟小时日星期一年

0 0 0 10 12 ? 2009 //表示: 于2009 年12 月10 日0:00:00 执行(星期几:’?’ 表示忽略)

0 0 0 10 12 ? * //代表:每年12月10日0:00:00运行

0 0 0 10 * //代表:每月10号0:00:00运行。

0 0 1 1 * //代表:每月1号1:00:0运行。

0 0 1 1 3,6,9 ? //: 代表3 月、6 月和9 月,在当天的1:00:00 运行。

0 0 1 1 2-5 ?

15316256359176d3d7fd52e~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717736843&x-signature=UDQK89s417x3uU4PQiHdp%2FnbCg8%3D

原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/81724.html

(0)
小条's avatar小条
上一篇 2024年5月31日 下午1:07
下一篇 2024年5月31日 下午1:07

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注