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-DECSUN-SAT这些值不区分大小写,比如 MONmon 效果一样。

举例如下:

表达式 说明
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。