cron本来是在linux下的一个定时任务执行工具,现在很多语言都支持cron,本文参考https://en.wikipedia.org/wiki/Cron,解释一下cron配置。
概述
cron配置有五个部分,分别代表分钟,小时,天,月,周,如下。
┌───────────── 分钟(0 - 59)
│ ┌───────────── 小时(0 - 23)
│ │ ┌───────────── 天 (1 - 31)
│ │ │ ┌───────────── 月 (1 - 12)
│ │ │ │ ┌───────────── 周几 (0 - 6) (周日到周一,有的系统里面7表示周日)
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
* * * * *
cron表达式
字段 | 包含的值 | 包含的特殊字符 | 备注 |
---|---|---|---|
分钟 | 0-59 | * , - |
|
小时 | 0-23 | * , - ? L W |
? L W只在某一些领域有效 |
天 | 1-31 | * , - |
|
月 | 1-12或者JAN-DEC | * , - ? L # |
|
周 | 0-6或者SUN-SAT | * , - |
? L W只在某一些领域有效 |
说明:
月和周的英文不区分大小写
*星号
表示任一值
, 逗号
表示多个值,比如
1,2,3,
- 连字符
表示连续多个值,比如
1-3
表示1,2,3
/斜线
表示整除,比如在分钟字段的
*/5
表示每5分钟,0 5 10 15 20 25 30 35 40 45 50 55
L
表示最后(last),比如在周那个字段的
5L
表示某一个月的最后一个周五。
另外还有W # ? H
不常用,就不解释了。
例子
下面列举一些常用的cron表达式。
每小时
0 * * * *
每2小时
0 */2 * * *
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed
每天的下午1点从1分到50分的每分钟
1-50 13 * * *
每天的早上8点到下午3点,每隔两个小时
0 8-15/2 * * *