@Scheduled cron定时任务

cron是一串字符串,5或6个空格分为6或7个域,每个域有特定含义,有两种格式:

1.Seconds Minutes Hours DayofMonth Month DayofWeek Year------->7个域

2.Seconds Minutes Hours DayofMonth Month DayofWeek------->6个域

 

域定义:

1.Seconds:可出现", - * /"四个字符,有效范围是0-59的整数

2.Minutes:同上

3.Hours:可出现", - * /"四个字符,有效范围是0-23的整数

4.DayofMonth(月维度的日):可出现", - * / ? L W C"8个字符,有效范围是0-31的整数

5.Month:可出现", - * /"四个字符,有效范围是0-12的整数或JAN-DEC

6.DayofWeek(周维度的日):可出现", - * / ? L C #"8个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推

7.Year:可出现", - * /"四个字符,有效范围为1970-2099年

 

特殊字符含义:

1.*:该域任意值,如"1 * * * * ?",表示每月每日每时每分的第一秒都会触发,数字表指定的时间,*表“每个域单位”都会触发

注意:由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?

2.?:只能用在DayofMonth和DayofWeek两个域,必有一个是?

3.-:表范围,如"0 5-20 * * * ?"在第5-第20分钟内,每分钟触发一次

4./:从作时间开始,每右间隔触发一次,/可指定间隔大小,而*只能最小单位

5.,:枚举某几个时间点触发,可以不连续

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

7.W:表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一 到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份。

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

9.#:用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三。 

 

举例:

每隔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 * * ?"

表示在每月的1日的凌晨2点调度任务:"0 0 2 1 * ? *"

表示周一到周五每天上午10:15执行作业:"0 15 10 ? * MON-FRI" 

表示2002-2006年的每个月的最后一个星期五上午10:15执行:"0 15 10 ? 6L 2002-2006"

 

非原创

参考:https://www.cnblogs.com/dyppp/p/7498457.html

posted @ 2019-01-09 16:45  rOtk1992  阅读(904)  评论(0)    收藏  举报