Cron表达式
Cron表达式可以用作定时任务,Linux也有相应的功能。定时任务可以按照设定,以一定间隔自动完成指定动作,比如半夜清理过期数据,每周一向所有用户发送推送消息等等。定时任务的最小时间单位是 秒,正常情况下时间误差都可以控制在秒级别。
Cron 表达式
Cron 表达式的基本语法为:
1 | <秒> <分钟> <小时> <日期 day-of-month> <月份> <星期 day-of-week> |
| 位置 | 字段 | 约束 | 取值 | 可使用的特殊字符 |
|---|---|---|---|---|
| 1 | 秒 | 必须 | 0-59 | , - * / |
| 2 | 分钟 | 必须 | 0-59 | , - * / |
| 3 | 小时 | 必须 | 0-23(0 为午夜) | , - * / |
| 4 | 日期 | 必须 | 1-31 | , - * ? / |
| 5 | 月份 | 必须 | 1-12、JAN-DEC | , - * / |
| 6 | 星期 | 必须 | 1-7、SUN-SAT | , - ? / |
特殊字符的用法:
| 字符 | 含义 | 用法 |
|---|---|---|
* |
所有值 | 代表一个字段的所有可能取值。如将 <分钟> 设为 *,表示每一分钟。 |
? |
不指定值 | 用于可以使用该字符的两个字段中的一个,在一个表达式中只能出现一次。如任务执行时间为每月 10 号,星期几无所谓,那么表达式中 <日期> 设为 10,<星期> 设为 ?。 |
- |
范围 | 如 <小时> 为 10-12,即 10 点、11 点、12 点。 |
, |
分隔多个值 | 如 <星期> 为 MON,WED,FRI,即周一、周三、周五。 |
/ |
增量 | 如 <秒> 设为 0/15,即从 0 秒开始,以 15 秒为增量,包括 0、15、30、45 秒;5/15 即 5、20、35、50 秒。*/ 与 0/ 等效,如 <日期> 设为 1/3,即从每个月的第一天开始,每 3 天(即每隔 2 天)执行一次任务。 |
各字段以空格或空白隔开。JAN-DEC、SUN-SAT这些值不区分大小写,比如 MON 和 mon 效果一样。
举例如下:
| 表达式 | 说明 |
|---|---|
0 */5 * * * ? |
每隔 5 分钟执行一次。 |
10 */5 * * * ? |
每隔 5 分钟执行一次,每次执行都在分钟开始的 10 秒,例如 10:00:10、10:05:10 等等。 |
0 30 10-13 ? * WED,FRI |
每周三和每周五的 10:30、11:30、12:30、13:30 执行。 |
0 */30 8-9 5,20 * ? |
每个月的 5 号和 20 号的 8 点和 10 点之间每隔 30 分钟执行一次,也就是 8:00、8:30、9:00 和 9:30。 |