Cron表达式
Cron表达式详解

Cron表达式详解各个字段的含义名称是否必须允许值特殊字符秒是0-59, - * /分是0-59, - * /时是0-23, - * /⽇是1-31, - * ?/ L W C⽉是1-12 或 JAN-DEC, - * /周是1-7 或 SUN-SAT, - * ? / L C #年否空或 1970-2099, - * /特殊符号含义1. 星号(*):可⽤在所有字段中,表⽰对应时间域的每⼀个时刻,例如,在分钟字段时,表⽰“每分钟”;2. 问号(?):该字符只在⽇期和星期字段中使⽤,它通常指定为“⽆意义的值”,相当于点位符;3. 减号(-):表达⼀个范围,如在⼩时字段中使⽤“10-12”,则表⽰从10到12点,即10,11,12;4. 逗号(,):表达⼀个列表值,如在星期字段中使⽤“MON,WED,FRI”,则表⽰星期⼀,星期三和星期五;5. 斜杠(/): x/y表达⼀个等步长序列,x为起始值,y为增量步长值。
如在分钟字段中使⽤0/15,则表⽰为0,15,30和45秒,⽽5/15在分钟字段中表⽰5,20,35,50,你也可以使⽤*/y,它等同于0/y;6. L:该字符只在⽇期和星期字段中使⽤,代表“Last”的意思,但它在两个字段中意思不同。
L在⽇期字段中,表⽰这个⽉份的最后⼀天,如⼀⽉的31号,⾮闰年⼆⽉的28号;如果L⽤在星期中,则表⽰星期六,等同于7。
但是,如果L出现在星期字段⾥,⽽且在前⾯有⼀个数值X,则表⽰“这个⽉的最后X天”,例如,6L表⽰该⽉的最后星期五;7. W:该字符只能出现在⽇期字段⾥,是对前导⽇期的修饰,表⽰离该⽇期最近的⼯作⽇。
例如15W表⽰离该⽉15号最近的⼯作⽇,如果该⽉15号是星期六,则匹配14号星期五;如果15⽇是星期⽇,则匹配16号星期⼀;如果15号是星期⼆,那结果就是15号星期⼆。
但必须注意关联的匹配⽇期不能够跨⽉,如你指定1W,如果1号是星期六,结果匹配的是3号星期⼀,⽽⾮上个⽉最后的那天。
5位cron表达式

5位cron表达式Cron是一款广泛应用于Unix 和类Unix 操作系统的任务调度工具。
它允许用户以编程方式定时执行特定任务,从而实现自动化管理。
下面我们将介绍5个常用的Cron表达式示例,并分析它们的实用性和具体应用场景。
1.每小时执行一次的任务Cron表达式:0 * * * * 命令示例:0 * * * * /usr/bin/php /var/www/html/index.php解释:这个表达式表示每小时执行一次指定的命令。
其中的数字“0”表示分钟,意味着每小时的第一分钟执行。
字母“*”表示其他域(小时、天、月、周),意味着不受限制。
实用性分析:这个表达式适用于需要每小时执行一次的任务,例如数据统计、数据备份等。
2.每天凌晨1点执行一次的任务Cron表达式:0 0 0 * * 命令示例:0 0 0 * * /usr/bin/php /var/www/html/index.php解释:这个表达式表示每天凌晨1点整执行指定的命令。
字母“0”表示分钟和小时,意味着只在凌晨1点整执行。
其他域均为“*”,表示不受限制。
实用性分析:这个表达式适用于需要每天凌晨执行一次的任务,例如定时发送邮件、执行耗时较长的任务等。
3.每月1号执行一次的任务Cron表达式:0 0 0 1 * 命令示例:0 0 0 1 * /usr/bin/php /var/www/html/index.php解释:这个表达式表示每月1号执行指定的命令。
字母“0”表示分钟和小时,意味着只在每月1号整执行。
其他域分别为“*”和“1”,表示不受限制和仅在1号。
实用性分析:这个表达式适用于需要每月执行一次的任务,例如账单生成、统计报表等。
4.每周六凌晨1点执行一次的任务Cron表达式:0 0 0 0 6 命令示例:0 0 0 0 6 /usr/bin/php /var/www/html/index.php解释:这个表达式表示每周六凌晨1点整执行指定的命令。
五位cron表达式

五位cron表达式
一个cron表达式有5个字段,它们分别是:
1. 秒(0-59)
2. 分钟(0-59)
3. 小时(0-23)
4. 日期(1-31)
5. 月份(1-12)
每个字段都用空格隔开,且cron表达式的格式为:“秒分钟小时日期月份”。
以下是一个五位cron表达式的示例,它表示每天凌晨1点30分执行:
```
0 30 1 * * ?
```
其中,第一个字段为“0”,表示在秒这一维度上不进行任何限制;第二个字段为“30”,表示在分钟这一维度上,在30分这一时刻执行;第三个字段为“1”,表示在小时这一维度上,在凌晨1点这一时刻执行;第四个字段为“*”,表示在日期这一维度上,每天都会执行;第五个字段为“*”,表示在月这一维度上,每个月都会执行。
最后一个“?”表示这是一个非定期的作业,它的含义是“该任务的下次运行时间是不确定的”。
常见的cron表达式

Cron 是一种定时任务调度工具,可以用于在预定的时间运行指定的命令或程序。
常见的 Cron 表达式有以下几种:1. `* * * * *`:表示每小时的零分零秒执行一次。
2. `0 0 * * *`:表示每天的零点执行一次。
3. `0 0 8 * *`:表示每周一至周五的早上 8 点执行一次。
4. `0 0 12 * *`:表示每周一至周五的中午 12 点执行一次。
5. `0 0 18 * *`:表示每周一至周五的下午 6 点执行一次。
6. `0 0 0 * *`:表示每天的零点执行一次。
7. `0 0 0 1 *`:表示每月 1 号的零点执行一次。
8. `0 0 0 1,15 *`:表示每月 1 号和 15 号的零点执行一次。
9. `0 0 0 1,15,30,31 *`:表示每月 1 号、15 号、30 号和 31 号的零点执行一次。
10. `0 0 0 * *?`:表示每天的零点执行一次,但具体执行时间可以根据系统时钟进行调整。
这些表达式可以用于创建定时任务,以满足各种应用场景的需求。
例如,可以使用 `* * * * *` 来创建一个定时任务,该任务每小时运行一次,以更新系统日志;可以使用 `0 0 * * *` 来创建一个定时任务,该任务每天零点运行一次,以清理磁盘垃圾;可以使用 `0 0 8 * *` 来创建一个定时任务,该任务每周一至周五早上 8 点运行一次,以备份系统数据;等等。
需要注意的是,Cron 表达式中的时间单位是秒,因此需要将小时、分钟和秒分别转换为秒,才能正确地表达定时任务的执行时间。
同时,Cron 表达式中的日期部分可以是具体的日期,也可以是一段时间范围,具体取决于使用的 Cron 实现。
Cron表达式

Cron表达式Cron表达式被⽤来配置CronTrigger实例。
Cron表达式是⼀个由 7个⼦表达式组成的字符串。
每个⼦表达式都描述了⼀个单独的⽇程细节。
这些⼦表达式⽤空格分隔,分别表⽰:1. Seconds 秒2. Minutes 分钟3. Hours ⼩时4. Day-of-Month ⽉中的天5. Month ⽉6. Day-of-Week 周中的天7. Year (optional field) 年(可选的域)s m h dom M dow Y顺序:右⾄左路,[年]周⽉⽇时分秒符号:* 任意/ 增量 a/b 从a开始每次增加b? 没有值L 最后⼀个值W# ⽉中的第⼏个周⼏ 6#3 第三个周五- 连续区间⾄, 多个值⼀个cron表达式的例⼦字符串为"0 0 12 ? * WED",这表⽰“每周三的中午 12: 00”。
单个⼦表达式可以包含范围或者列表。
例如:前⾯例⼦中的周中的天这个域(这⾥是"WED")可以被替换为"MON-FRI", "MON, WED, FRI"或者甚⾄"MON-WED,SAT"。
通配符('*')可以被⽤来表⽰域中“每个”可能的值。
因此在"Month"域中的*表⽰每个⽉,⽽在 Day-Of-Week域中的*则表⽰“周中的每⼀天”。
所有的域中的值都有特定的合法范围,这些值的合法范围相当明显,例如:秒和分域的合法值为 0到 59,⼩时的合法范围是 0到 23,Day-of-Month中值得合法凡范围是0到 31,但是需要注意不同的⽉份中的天数不同。
⽉份的合法值是0到 11。
或者⽤字符串JAN,FEB MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV 及 DEC 来表⽰。
Days-of-Week可以⽤1到7来表⽰(1=星期⽇)或者⽤字符串SUN, MON, TUE, WED,THU, FRI 和SAT来表⽰.'/'字符⽤来表⽰值的增量,例如, 如果分钟域中放⼊'0/15',它表⽰“每隔 15 分钟,从 0开始”,如果在份中域中使⽤'3/20',则表⽰“⼩时中每隔 20分钟,从第 3分钟开始”或者另外相同的形式就是'3,23,43'。
5位cron表达式

5位cron表达式Cron是一个时间基准任务调度器,可以在特定时间周期性地运行任务。
Cron表达式是一种用于指定任务执行时间的语法,由五个时间字段组成,分别表示分钟、小时、日期、月份和星期几。
在本文中,我将为您介绍五个常用的Cron表达式,让您更加了解如何使用Cron进行任务调度。
第一个Cron表达式是:"0 0/5 * * * ?"。
这个表达式表示每隔5分钟执行一次任务。
其中,分钟字段为0,表示任务在每小时的0分钟开始执行;小时字段为0/5,表示任务从0点开始,每隔5小时执行一次;天、月和星期字段皆为"*",表示任务在该时间单位内没有限制。
第二个Cron表达式是:"0 0 8 * * ?"。
这个表达式表示每天的上午8点执行任务。
分钟字段为0,表示任务在每小时的0分钟开始执行;小时字段为0,表示任务在该时间单位内没有限制;天字段为8,表示任务在每个月的第8天执行;月和星期字段皆为"*",表示任务在该时间单位内没有限制。
第三个Cron表达式是:"0 0 0 ? * SUN"。
这个表达式表示每个星期日的午夜执行任务。
分钟和小时字段皆为0,表示任务在每天的0点开始执行;天字段为"?",表示任务在该时间单位内没有限制;月字段为"*",表示任务在该时间单位内没有限制;星期字段为"SUN",表示任务在星期日执行。
第四个Cron表达式是:"0 0 0 ? * MON-FRI"。
这个表达式表示每个工作日的午夜执行任务。
分钟和小时字段皆为0,表示任务在每天的0点开始执行;天字段为"?",表示任务在该时间单位内没有限制;月字段为"*",表示任务在该时间单位内没有限制;星期字段为"MON-FRI",表示任务在星期一到星期五执行。
cron 表达式回显秒分时天月年 逐一解析

cron 表达式回显秒分时天月年逐一解析摘要:一、cron 表达式的基本概念1.cron 表达式的组成2.cron 表达式的用途二、cron 表达式中各部分的解析1.秒2.分3.时4.天5.月6.年三、cron 表达式的实际应用案例1.常见cron 表达式示例2.实际应用场景举例四、总结与展望1.cron 表达式在自动化任务中的应用2.未来可能的发展趋势正文:一、cron 表达式的基本概念cron 表达式是一种用于定义自动执行任务的的时间表达式,广泛应用于服务器、云服务等领域。
它通过特定的语法规则,来描述任务的执行时间,从而实现自动化、无人值守的任务执行。
二、cron 表达式中各部分的解析1.秒秒是cron 表达式中最小的时间单位,可以精确到每秒。
例如,`*/1 * * * *` 表示每秒都执行一次任务。
2.分分是cron 表达式中的次小时间单位,可以精确到每分钟。
例如,`0 */1 * * *` 表示每分钟的第0 秒执行一次任务。
3.时时是cron 表达式中的小时单位,可以精确到每小时。
例如,`0 0/15 * * *` 表示每小时的第15 分钟执行一次任务。
4.天天是cron 表达式中的天单位,可以精确到每天。
例如,`0 0 12 * *` 表示每天的12:00 执行一次任务。
5.月月是cron 表达式中的月单位,可以精确到每月。
例如,`0 0 12 1 *` 表示每月的12 号12:00 执行一次任务。
6.年年是cron 表达式中的年单位,可以精确到每年。
例如,`0 0 12 1 1` 表示每年的1 月12 号12:00 执行一次任务。
三、cron 表达式的实际应用案例1.常见cron 表达式示例- 每天凌晨1 点备份数据库:`0 0 1 * *`- 每星期日凌晨3 点清理日志:`0 3 * * 0`- 每月的1 号凌晨5 点升级系统:`0 5 1 * *`2.实际应用场景举例- 服务器自动备份:通过定时任务,每天凌晨自动备份服务器数据,保证数据安全。
cron表达式用法 -回复

cron表达式用法-回复什么是cron表达式?cron表达式是一种用于定时执行任务的时间表达式。
它由6个字段组成,分别表示秒、分钟、小时、日期、月份和星期。
cron表达式可以精确到秒级别,非常灵活和易于使用。
在计算机领域,cron表达式广泛应用于自动化任务、批处理作业和调度系统等场景。
第一步:理解cron表达式的6个字段第一个字段表示秒,范围是0-59;第二个字段表示分钟,范围是0-59;第三个字段表示小时,范围是0-23;第四个字段表示日期,范围是1-31;第五个字段表示月份,范围是1-12;第六个字段表示星期,范围是0-7,其中0表示星期天,1表示星期一,依此类推。
第二步:掌握cron表达式的各种符号在cron表达式中,有一些符号用于表示特定的时间段。
以下是一些常见的符号:*:表示所有可能的值。
例如,在第一个字段中使用*表示每一秒都会触发任务。
,:用于分隔多个时间点。
例如,在第二个字段中使用1,3,5表示任务将在每小时的第1、第3、第5分钟触发。
-:用于表示一个时间范围。
例如,在第三个字段中使用8-17表示任务将在每天的8点至17点之间触发。
/:用于指定时间间隔。
例如,在第四个字段中使用1/5表示任务将每隔5天触发一次。
第三步:使用一些例子来解释cron表达式例1:0 0 8 * * ?表示在每天的8点触发任务。
- 第一个字段0:表示任务在每一秒的第0秒触发。
- 第二个字段0:表示任务在每个小时的第0分钟触发。
- 第三个字段8:表示任务在每天的第8个小时触发。
- 第四个字段*:表示任务在每天的任意日期触发。
- 第五个字段*:表示任务在每个月份触发。
- 第六个字段?:表示任务在每个星期触发。
例2:0 0 12 1/2 * ?表示在每隔两天的12点触发任务。
- 第一个字段0:表示任务在每一秒的第0秒触发。
- 第二个字段0:表示任务在每个小时的第0分钟触发。
- 第三个字段12:表示任务在每天的第12个小时触发。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Cron表达式
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:
Seconds Minutes Hours DayofMonth Month DayofWeek Year或
Seconds Minutes Hours DayofMonth Month DayofWeek
∙从左至右,这些元素的定义如下:
∙
∙1.秒(0–59)
∙
∙2.分钟(0–59)
∙
∙3.小时(0–23)
∙
∙4.月份中的日期(1–31)
∙
∙5.月份(1–12或JAN–DEC)
∙
∙6.星期中的日期(1–7或SUN–SAT)
∙
∙7.年份(1970–2099)
每一个域可出现的字符如下:
Seconds:可出现", - * /"四个字符,有效范围为0-59的整数
Minutes:可出现", - * /"四个字符,有效范围为0-59的整数
Hours:可出现", - * /"四个字符,有效范围为0-23的整数
DayofMonth:可出现", - * / ? L W C"八个字符,有效范围为0-31的整数
Month:可出现", - * /"四个字符,有效范围为1-12的整数或JAN-DEc DayofWeek:可出现", - * / ? L C #"四个字符,有效范围为1-7的整数或SUN-SAT两个范围。
1表示星期天,2表示星期一,依次类推
Year:可出现", - * /"四个字符,有效范围为1970-2099年
每一个域都使用数字,但还可以出现如下特殊字符,它们的含义是:
(1)*:表示匹配该域的任意值,假如在Minutes域使用*, 即表示每分钟都会触发事件。
(2)?:只能用在DayofMonth和DayofWeek两个域。
它也匹配域的任意值,但实际不会。
因为DayofMonth和DayofWeek会相互影响。
例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法:13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。
(3)-:表示范围,例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次
(4)/:表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次.
(5),:表示列出枚举值值。
例如:在Minutes域使用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 表示2002-2006年的每个月的最后一个星期五上午10:15执行作
一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。
按顺序依次为
秒(0~59)
分钟(0~59)
小时(0~23)
天(月)(0~31,但是你需要考虑你月的天数)
月(0~11)
天(星期)(1~7 1=SUN 或SUN,MON,TUE,WED,THU,FRI,SAT)
年份(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 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"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”)的含义一样
“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值
当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”
“L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写但是它在两个子表达式里的含义是不同的。
在天(月)子表达式中,“L”表示一个月的最后一天
在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT
如果在“L”前有具体的内容,它就具有其他的含义了
例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最一个星期五
注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题
字段允许值允许的特殊字符
秒0-59 , - * /
分0-59 , - * /
小时0-23 , - * /
日期1-31 , - * ? / L W C
月份1-12 或者JAN-DEC , - * /
星期1-7 或者SUN-SAT , - * ? / L C #
年(可选)留空, 1970-2099 , - * /
2)Cron表达式范例:
每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?。