代码之家  ›  专栏  ›  技术社区  ›  Henry Yang

crontab星期几和月几必须同时匹配吗?

  •  0
  • Henry Yang  · 技术社区  · 5 年前

    Wikipedia 说:

    通常情况下,当时间/日期规范 所有字段都与当前时间和日期匹配,有一个例外:如果 “月日”(字段3)和“周日”(字段5)都是 受限(不是“*”),则其中一个或两个必须与当前日期匹配。

    这是否意味着如果我设置

    星期几=2,月日=09

    周日=3,月日=10

    那么任务将不会在2019年1月9日(星期三)运行?

    我认为wiki是不正确的。

    2 回复  |  直到 5 年前
        1
  •  1
  •   kvantour    5 年前

    这意味着如果满足这两个条件中的一个(可以同时满足,不需要同时满足)

    注: 命令的执行日期可以在以下两个字段中指定:“月份”和“星期几”。如果两个字段都受到限制(即不包含 * 字符),命令将在 任何一个 字段与当前时间匹配。例如, 30 4 1,15 * 5 会导致命令在每月1号和15号凌晨4:30运行, 每个星期五。

    来源: man 5 crontab

    在op的例子中,如果day是 Wednesday Jan 09 2019 ,而不是crontab:

    x x 9 x 2
    

    将执行,因为这是一个月的第九天,并且

    x x 10 x 3
    

    因为是星期三执行

        2
  •  1
  •   Romeo Ninov    5 年前

    月日和周日之间的函数是或。所以记录

    0 0 9 1 2
    

    0 0 10 1 3
    

    两者都将执行脚本。关系是

    day of week OR day of month
    

    供参考检查 man page 属于 cron

    注意:命令执行的日期可以由两个字段指定 -每月的某一天和每周的某一天。如果两个字段都受到限制(即,不是*),则当任一字段与 当前时间。