Cron表达式详细教程
0.介绍欢迎大家关注我的公众号,可以和大家一起交流,进步,收获知识与能力。微信公众号:杨同学的编程生活Id:Code-2048正文:当我们第一次使用cron时 ,比较难受,一看这个表达式感觉什么也都不会,今天您看到我的博客,可以让您轻松解决这个问题。cron 表达式是一个字符串,该字符串由 6 个空格分为 7 个域,每一个域代表一个时间含义。通常定义 “年” 的部分可以省略,实际常用的由 前六部分
0.介绍
欢迎大家关注我的公众号,可以和大家一起交流,进步,收获知识与能力。
微信公众号:杨同学的编程生活
Id:Code-2048
正文:
当我们第一次使用cron时 ,比较难受,一看这个表达式感觉什么也都不会,今天您看到我的博客,可以让您轻松解决这个问题。
cron 表达式是一个字符串,该字符串由 6
个空格分为 7
个域,每一个域代表一个时间含义。通常定义 “年” 的部分可以省略,实际常用的由 前六部分组成
cron表达式格式:{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}
通过了解每个位置的允许的值,以及一些案例,足以让你轻松使用cron表达式
一、corn表达式中运行的字段值
秒 0-59 - * /
分 0-59 - * /
时 0-23 - * /
日 1-31 - * / ? L C W
月 1-12 JAN-DEC - * /
星期 1-7 SUN-SAT - * / ? L C #
年(可选) 1970-2099 - * /
二、特殊表示
星期1代表星期日,7代表星期六
要不规定日期,要不规定星期,两者基本上不会同时规定的。
三、每个符号的意义:
* 表示所有值,每个字段规定的值都可选。
? 表示没有说明的值,不关心该字段的值。
- 表示一个指定的范围,在这个范围内都可触发。
, 表示附加一个可能值,符号前和符号后是递增的值。
/ 符号前表示开始时间,符号后表示每次递增的值,表示从符号前时间开始,每隔多长时间触发一次。
L 表示最后的意思,如果用到月份,表示 "这个月最后一天";如果用到星期,表示“表示星期六”。 如果在星期中和数字联合使用,它的意思就是 "这个月的最后一个星期几" ,例如: "6L" 表示“这个月的最后一个星期五"。
W 只能用日期字段。用来描叙最接近指定天的工作日(周一到周五)。例如:在日期字段用“15W”指“最接近这个 月第15天的工作日”,即如果这个月第15天是周六,那么触发器将会在这个月第14天即周五触发;如果这个月第15天是周日,那么触发器将会在这个月第 16天即周一触发;如果这个月第15天是周一,那么就在触发器这天触发。而"LW" 表示这个月的最后一天工作日。
# 只能用在星期字段,符合前面数字表示周几,后面数字表示第几个。用来指定这个月的第几个星期几。例:在星期字段中用"6#3"指这个月第3个周五(6指周五,3指第3个)。如果指定的日期不存在,触发器就不会触发。
C 指和calendar联系后计算过的值。例:在日期字段中用“5C”指在这个月第5天或之后包括calendar的第一天;在星期字段用“1C”指在这周日或之后包括calendar的第一天。
四、一些cron表达式案例
要不规定日期,要不规定星期,两者基本上不会同时规定的。
*/5 * * * * ? 每隔5秒执行一次
0 */1 * * * ? 每隔1分钟执行一次
0 0 5-15 * * ? 每天5-15点整点触发
0 0/3 * * * ? 每三分钟触发一次
0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发
0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0 12 ? * WED 表示每个星期三中午12点
0 0 17 ? * TUES,THUR,SAT 每周二、四、六下午五点
0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发
0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
0 0 23 L * ? 每月最后一天23点执行一次
0 15 10 L * ? 每月最后一日的上午10:15触发
0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发
0 15 10 * * ? 2005 2005年的每天上午10:15触发
0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发
0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发
30 * * * * ? 每半分钟触发任务
30 10 * * * ? 每小时的10分30秒触发任务
30 10 1 * * ? 每天1点10分30秒触发任务
30 10 1 20 * ? 每月20号1点10分30秒触发任务
30 10 1 20 10 ? * 每年10月20号1点10分30秒触发任务
30 10 1 20 10 ? 2011 2011年10月20号1点10分30秒触发任务
30 10 1 ? 10 * 2011 2011年10月每天1点10分30秒触发任务
30 10 1 ? 10 SUN 2011 2011年10月每周日1点10分30秒触发任务
15,30,45 * * * * ? 每15秒,30秒,45秒时触发任务
15-45 * * * * ? 15到45秒内,每秒都触发任务
15/5 * * * * ? 每分钟的每15秒开始触发,每隔5秒触发一次
15-30/5 * * * * ? 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次
0 0/3 * * * ? 每小时的第0分0秒开始,每三分钟触发一次
0 15 10 ? * MON-FRI 星期一到星期五的10点15分0秒触发任务
0 15 10 L * ? 每个月最后一天的10点15分0秒触发任务
"0 15 10 LW * ? 每个月最后一个工作日的10点15分0秒触发任务
0 15 10 ? * 5L 每个月最后一个星期四的10点15分0秒触发任务
0 15 10 ? * 5#3 每个月第三周的星期四的10点15分0秒触发任务
0 0 15 1 10 * 1949 1949年10月1日下午3点
0 30 */2 * * ? 每2小时第30分0秒执行
1,3,5 0 1-5 L * ? 每个月最后一天的1到5点,然后这几个点内的每个0分1秒,0分3秒,0分5秒各执行一次。
五、cron 表达式用途
corn表达式最主要的用途就是在程序中做一些定时任务,如年度报表、缓存统计报告等,由于这些数据量实时统计非常消耗程序性能,所以就每隔一段时间,通过自动任务跑一次,这样可以极大的提升用户浏览体验。
更多推荐
所有评论(0)