cron =========== cron 用于定时任务调度(Job Scheduler)。 .. highlight:: bash :linenothreshold: 2 cron 表达式 --------------- cron 表达式是一个字符串,分为 6 或 7 个域,每两个域之间用空格分隔,其语法格式为:: 秒域 分域 时域 天域 月域 周域 年域 其中年域可以省略,省略时表示“每年”。 .. table:: 域和取值范围、可用符号 :align: center ============ ============================= ====================== 域 取值范围 可用符号 ============ ============================= ====================== 秒域 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. 在线Cron表达式生成器 https://cron.qqe2.com/ https://www.matools.com/cron/ 2. cron表达式的用法 https://www.cnblogs.com/dubhlinn/p/10740838.html 3. Cron Expressions https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm