1. cron

cron 用于定时任务调度(Job Scheduler)。

1.1. cron 表达式

cron 表达式是一个字符串,分为 6 或 7 个域,每两个域之间用空格分隔,其语法格式为:

秒域 分域 时域 天域 月域 周域 年域

其中年域可以省略,省略时表示“每年”。

域和取值范围、可用符号

取值范围

可用符号

秒域

0 - 59

* - , /

分域

0 - 59

* - , /

时域

0 - 23

* - , /

天域

1 - 31

* - , / ? L W C

月域

1 - 12 或 JAN - DEC

* - , /

周域

1 - 7 或 SUN - SAT

* - , / L C #

年域

空 或 1970 - 2099

* - , /

常用符号

  • *

    • 匹配该域的所有值。

  • -

    • 表示该域上的一个范围。

    • 0 30 9-15 ? * * * 表示在每天的 09:30:00 - 15:30:00 内每小时执行一次。

  • ,

    • 表示枚举值。

    • 0 0 9,10 ? * * * 表示在每天的 09:00:00 和 10:00:00 各执行一次。

  • /

    • 表示起始时间和间隔时间。

    • 0 0 3/5 * * ? * 表示每天 03:00:00 点开始执行,每隔 5 个小时执行一次,即 3 点、8 点、13 点、18 点、23 点各执行一次。

    • 0 0 /5 * * ? * 表示每天 00:00:00 点开始执行,每隔 5 个小时执行一次。

    • 0 0 0 /10 * ? * 表示每 10 天执行一次,每个月都在 1、11、21、31 号零点执行。

  • ?

    • 用在天域或周域上,表示不确定值、不限制值。它与 * 的区别是,它并不能匹配到该域上的所有值,因为在同时指定某日和周几的时候,这两个值实际上是冲突的。

    • 0 0 5 6 * ? * 表示每个月 6 号 05:00:00 执行而无论是周几。

    • 0 0 5 ? * 3 * 表示每个周二 05:00:00 执行而无论是几号。

  • L

    • 用在天域或周域上:用于天域时表示当月最后一天;用于周域时,如果前面不加数字则表示周六,加数字表示最后一个周值。

    • 0 0 23 L * ? * 表示每月最后一天的 23:00:00 执行。

    • 0 0 23 ? * L * 表示每周六的 23:00:00 执行, 0 0 23 ? * 3L * 表示每月最后一个周二的 23:00:00 点执行。

  • #

    • 用在周域上,表示第几个周几执行。

    • 15 30 6 ? * 7#5 * 表示每个月第 5 个周六的 06:30:15 执行,如果某个月不存在第 5 个周六,则跳过。

1.2. 参考资料

  1. 在线Cron表达式生成器

  1. cron表达式的用法

  1. Cron Expressions