crontab 星期几语法

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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”,两者都工作得很好。我怀疑如果任何字符之间有空格,你最终会出错。

以上是关于crontab 星期几语法的主要内容,如果未能解决你的问题,请参考以下文章

linux的crontab自动定时执行

linux计划任务crontab

我正在使用 Oracle SQL Developer 并希望从时间戳中提取星期几。我的语法是不是正确?

MySQL 按星期几计算

JS如何利用日期判断星期几

java中如何获取日期时间中的星期几?