1. cron
cron 用于定时任务调度(Job Scheduler)。
1.1. cron 表达式
cron 表达式是一个字符串,分为 6 或 7 个域,每两个域之间用空格分隔,其语法格式为:
秒域 分域 时域 天域 月域 周域 年域
其中年域可以省略,省略时表示“每年”。
域 |
取值范围 |
可用符号 |
---|---|---|
秒域 |
0 - 59 |
|
分域 |
0 - 59 |
|
时域 |
0 - 23 |
|
天域 |
1 - 31 |
|
月域 |
1 - 12 或 JAN - DEC |
|
周域 |
1 - 7 或 SUN - SAT |
|
年域 |
空 或 1970 - 2099 |
|
常用符号
*
匹配该域的所有值。
-
表示该域上的一个范围。
0 30 9-15 ? * * *
表示在每天的 09:30:00 - 15:30:00 内每小时执行一次。
,
表示枚举值。
0 0 9,10 ? * * *
表示在每天的 09:00:00 和 10:00:00 各执行一次。
/
表示起始时间和间隔时间。
0 0 3/5 * * ? *
表示每天 03:00:00 点开始执行,每隔 5 个小时执行一次,即 3 点、8 点、13 点、18 点、23 点各执行一次。0 0 /5 * * ? *
表示每天 00:00:00 点开始执行,每隔 5 个小时执行一次。0 0 0 /10 * ? *
表示每 10 天执行一次,每个月都在 1、11、21、31 号零点执行。
?
用在天域或周域上,表示不确定值、不限制值。它与
*
的区别是,它并不能匹配到该域上的所有值,因为在同时指定某日和周几的时候,这两个值实际上是冲突的。0 0 5 6 * ? *
表示每个月 6 号 05:00:00 执行而无论是周几。0 0 5 ? * 3 *
表示每个周二 05:00:00 执行而无论是几号。
L
用在天域或周域上:用于天域时表示当月最后一天;用于周域时,如果前面不加数字则表示周六,加数字表示最后一个周值。
0 0 23 L * ? *
表示每月最后一天的 23:00:00 执行。0 0 23 ? * L *
表示每周六的 23:00:00 执行,0 0 23 ? * 3L *
表示每月最后一个周二的 23:00:00 点执行。
#
用在周域上,表示第几个周几执行。
15 30 6 ? * 7#5 *
表示每个月第 5 个周六的 06:30:15 执行,如果某个月不存在第 5 个周六,则跳过。
1.2. 参考资料
在线Cron表达式生成器
cron表达式的用法
Cron Expressions