【问题标题】:Crontab Day of the Week syntaxcrontab 星期几语法
【发布时间】:2013-09-25 23:34:38
【问题描述】:

在 crontab 中,星期几字段是否从 0 - 61 -7 运行?

我看到这方面的信息相互矛盾。维基百科指出0-6 和我看到的其他网站是1-7

还有什么含义,或者错误地使用07?即 cron 还会运行吗?

【问题讨论】:

    标签: linux cron crontab sysadmin


    【解决方案1】:

    07都代表星期日,你可以使用你想要的,所以写0-6或1-7的结果是一样的。

    另外,正如@Henrik 所建议的,可以用缩短的日期名称替换数字,例如MONTHU 等:

    0 - Sun      Sunday
    1 - Mon      Monday
    2 - Tue      Tuesday
    3 - Wed      Wednesday
    4 - Thu      Thursday
    5 - Fri      Friday
    6 - Sat      Saturday
    7 - Sun      Sunday
    

    在图形上,* * * * * command to be executed 代表:

    minute hour day of month month day of week
    (0-59) (0-23) (1-31) (1-12) (1-7)
    * * * * * command to be executed

    或者使用旧样式:

     ┌────────── minute (0 - 59)
     │ ┌──────── hour (0 - 23)
     │ │ ┌────── day of month (1 - 31)
     │ │ │ ┌──── month (1 - 12)
     │ │ │ │ ┌── day of week (0 - 6 => Sunday - Saturday, or
     │ │ │ │ │                1 - 7 => Monday - Sunday)
     ↓ ↓ ↓ ↓ ↓
     * * * * * command to be executed
    

    最后,如果要指定天数,可以用逗号分隔天数,例如SUN,MON,THU将只在星期日执行命令,星期一在星期四执行。

    您可以在Wikipedia's article about Cron 中阅读更多详细信息,并使用crontab.guru 在线检查cron 表达式。

    【讨论】:

    • 好吧,我没有意识到周日可能是 0 或 7。谢谢
    • 请注意,您不能这样做:Sat-Sun,只有6-7Sat,Sun
    • 你能确认这是不区分大小写的吗?您在回复中在SUNSunSunday 之间切换了几次
    • @MichaelChirico 哦,好点。检查Wikipedia's article about Cron 我读到月份和工作日的缩写不区分大小写
    • @pkowalczyk 即使 'man 5 crontab' 证实了您的说法,命名的星期几列表在 cronie-1.5.2-4 (CentOS 8) 提供的 crond 中工作正常
    【解决方案2】:
        :-) Sunday    |    0  ->  Sun
                      |  
            Monday    |    1  ->  Mon
           Tuesday    |    2  ->  Tue
         Wednesday    |    3  ->  Wed
          Thursday    |    4  ->  Thu
            Friday    |    5  ->  Fri
          Saturday    |    6  ->  Sat
                      |  
        :-) Sunday    |    7  ->  Sun
    

    正如您在上面看到的,并且如前所述,数字07 都分配给星期日。还列出了星期几的英文缩写,也可以在crontab中使用。

    数字或缩写使用示例

    15 09 * * 5,6,0             command
    15 09 * * 5,6,7             command
    15 09 * * 5-7               command
    15 09 * * Fri,Sat,Sun       command
    

    四个例子都是一样的,每周五、周六、周日的9点15点执行一个命令。

    详细说明

    有两个数字 07 代表星期日对于编写以 0 开头或以 7 结尾的工作日范围很有用。因此,您可以编写范围以星期日开始或以星期日结束,例如0-25-7(范围必须以较小的数字开头,并且必须以较高的数字结束)。缩写不能用于定义工作日范围。

    【讨论】:

    • 为清楚起见,“缩写不能用于定义工作日范围。”这里的陈述似乎是一种说法,即不能用连字符-减号分隔缩写,只能用逗号分隔。换句话说,Fri,Sat,Sun 不能缩写为 Fri-Sun
    【解决方案3】:

    您还可以使用诸如 Mon 表示星期一、Tue 表示星期二等日期名称。这样更人性化。

    【讨论】:

    • 这不适用于某些发行版;使用 Ubuntu 14.04.3 LTS 进行测试,我得到了 "/tmp/crontab.Nuq9GE/crontab":24: bad day-of-week"
    • @Nikita 检查拼写错误或多余的空格。我在 Ubuntu 14.04.3 上的 crontab 中有一个“Mon-Fri”和一个“Thu”,两者都工作得很好。我怀疑如果任何字符之间有空格,你最终会出错。
    猜你喜欢
    • 2013-12-31
    • 2019-06-02
    • 2011-08-13
    • 2016-10-22
    • 2015-05-13
    • 2022-08-10
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    相关资源
    最近更新 更多