Cron表达式&Crontab表达式
1. Cron 表达式
Cron表达式是一个时间表达式的字符串, 字符串有5到7个域用空格隔开(每种软件不一样), 分为5到7个域(常用的是5个域,不包含秒), 每个域可以是确定的取值也可以是逻辑符号代替.
cron=[秒] [分] [时] [日] [月] [周] [年](可省)
2. 域取值和特殊字符
域 | 取值范围 | 特殊字符 |
---|---|---|
秒 | [0,59] | , - * / |
分 | [0,59] | , - * / |
时 | [0,23] | , - * / |
日 | [0,31] | , - * / ? L W |
月 | [1,12] 或 [JAN, DEC] | , - * / |
星期 | [1, 7]或[SUN, SAT] | , - * / ? L # |
特殊字符含义:
‘,’ : 列举几个值. 例如: 在分钟域中, 5,10,20 表示在5分钟、10分钟、20分钟时触发一次
‘-’ : 指定一个范围. 例如: 在日期域中, 5-10 表示在5号到10号之间, 每天触发一次
‘*’ : 任何值. 例如: 在分钟域中表示每分钟, 在日期域中表示每天, 在月域中表示每月
‘/’ : 指定数值的增加幅度. 例如: 在分钟域中, 1/10 表示从1分开始,每隔10分钟 触发一次
‘?’ : 表示不确定的值. 在日期域和星期域中, 其中一个被指定值之后, 防止两者冲突, 可以将另外一个设置为 ?.
‘L’ : 表示最后(last), 在日期域里表示,某月的最后一天, 在星期域: 5L 表示最后一个周五.
‘W’ : 表示最近的工作日. 例如: 15W
,意思是:最接近该月15日的工作日.
‘#’ : 表示该月第几个周几 . 例如: 5#3
表示每个月的第三个星期五.
3. 常用表达式示例
a.分钟域
示例表达式 | 说明 |
---|---|
* * * * * | 每分钟执行一次 |
10 * * * * | 在第10分钟执行 |
10,20,30 * * * * | 在第 10、20 和 30 分钟时执行 |
0/20 * * * * | 从 0 到 59 每 20 分钟一次 |
10-30/5 * * * * | 在10 到 30 分钟内, 每5分钟执行一次 |
b. 小时域
示例表达式 | 说明 |
---|---|
0 */2 * * * | 每2小时,在第0分钟执行一次 |
0 5-10 * * * | 从 5 点到 10 点, 每小时第 0 分种执行一次 |
0 5-10/2 * * * | 从 5 点到 10 点,每 2 小时第 0 分钟执行一次 |
0 10,15,20 * * * | 第 10、15 和 20 小时的 第 0 分钟 执行一次 |
10,20 10,15,20 * * * | 第 10、15 和 20 小时的 第 10 分钟和第 20 分钟 分别执行一次 |
c. 日期域
示例表达式 | 说明 |
---|---|
* * 1 * * | 每月1号,每分钟执行一次 |
0 0 1 * * | 每月1号的 00:00 执行一次 |
0 0 1,10,15 * * | 每月1号 10号 15 号的 00:00 执行一次 |
0 0 1-15 * * | 每月1号 到 15 号每天的 00:00 执行一次 |
0 0 5-15/3 * * | 每月从5号开始到15号, 每3天在 00:00 执行一次 |
d. 月份域
示例表达式 | 说明 |
---|---|
* * * 2 * | 2月的每分钟执行一次 |
0 0 1 2,5,9 * | 2月 5月 9月 的1号 00:00 各执行一次 |
0 0 1 2-9 * | 2月 到 9月每月 的1号 00:00 各执行一次 |
0 0 1 2-10/2 * | 2月 到 10月 每两个月 的1号 00:00 各执行一次 |
0 0 1,10 */2 * | 每两个月的 1号 10号 00:00 各执行一次 |
e. 星期域
示例表达式 | 说明 |
---|---|
* * * * 1 | 每周一 每分钟执行一次 |
0 0 * * 1,3,5 | 每 周一、周三和周五 00:00 执行一次 |
0 0 * * 1-5 | 每 周一 到 周五 00:00 执行一次 |
0 0 * * 1-5/2 | 周一 到 周五, 每隔两天 的00:00 执行一次 |
0 0 * * SUN | 每周日的 00:00 执行一次 |