Crontab Day of the Week语法

时间:2013-09-20 14:24:52

标签: linux cron crontab sysadmin

在crontab中,“每周日期”字段是从0 - 6还是1 -7开始的?

我看到有关此事的相互矛盾的信息。维基百科声明0-6以及我见过的其他网站1-7

还有什么意思或使用07错误?即cron还会继续运行吗?

4 个答案:

答案 0 :(得分:303)

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

图形:

 ┌────────── 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中阅读更多详情。

答案 1 :(得分:92)

    :-) 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(范围必须以较低的数字开头,并且必须以较高的数字结尾)。缩写不能用于定义工作日范围。

答案 2 :(得分:7)

你也可以在星期一使用Mon这样的日期名称,在星期二使用Tue等等。它更加人性化。

答案 3 :(得分:0)

使用春季

  1. 此作业在每个星期一的上午10-00开始

    @Scheduled(cron = "0 0 10 * * MON")

  2. 此作业在每个月的1日上午10-00开始

    @Scheduled(cron = "0 0 10 1 1/1 ?")