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。 |