278

In crontab does the Day of the Week field run from 0 - 6 or 1 -7?

I am seeing conflicting information on this. wikipedia states 0-6 and other sites I have seen are 1-7.

Also what would be the implication or either using 0 or 7 incorrectly? i.e. would the cron still run?

fedorqui
  • 275,237
  • 103
  • 548
  • 598
Marty Wallace
  • 34,046
  • 53
  • 137
  • 200

3 Answers3

508

0 and 7 both stand for Sunday, you can use the one you want, so writing 0-6 or 1-7 has the same result.

Also, as suggested by @Henrik, it is possible to replace numbers by shortened name of days, such as MON, THU, etc:

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

Graphically, * * * * * command to be executed stands for:

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

Or using the old style:

 ┌────────── 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

Finally, if you want to specify day by day, you can separate days with commas, for example SUN,MON,THU will exectute the command only on sundays, mondays on thursdays.

You can read further details in Wikipedia's article about Cron and check a cron expression online with crontab.guru.

fedorqui
  • 275,237
  • 103
  • 548
  • 598
130
    :-) Sunday    |    0  ->  Sun
                  |  
        Monday    |    1  ->  Mon
       Tuesday    |    2  ->  Tue
     Wednesday    |    3  ->  Wed
      Thursday    |    4  ->  Thu
        Friday    |    5  ->  Fri
      Saturday    |    6  ->  Sat
                  |  
    :-) Sunday    |    7  ->  Sun

As you can see above, and as said before, the numbers 0 and 7 are both assigned to Sunday. There are also the English abbreviated days of the week listed, which can also be used in the crontab.

Examples of Number or Abbreviation Use

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

The four examples do all the same and execute a command every Friday, Saturday, and Sunday at 9.15 o'clock.

In Detail

Utilising both 0 and 7 to represent Sunday is advantageous for creating weekday ranges[*] that start or end with Sunday, such as 0-2 or 5-7. Ranges must start with the lower number and finish with the higher number. It's important to note that abbreviations cannot be used to define a weekday range with a hyphen-minus character. For example, you cannot shorten Fri,Sat,Sun to Fri-Sun.


[*] In the context of a crontab, a range is used to specify a continuous sequence of time units, such as minutes, hours, days, or weekdays. Ranges in crontab are represented using a hyphen-minus character (-) between the lower and upper bound values. For instance, a range of weekdays from Monday (1) to Wednesday (3) would be represented as 1-3.

Henrik
  • 2,771
  • 1
  • 23
  • 33
  • 4
    For clarity, “The abbreviations cannot be used to define a weekday range.” statement here seems to be a way of saying that one can’t separate abbreviations by hyphen‐minus characters, only commas. In other words, `Fri,Sat,Sun` can’t be shortened to `Fri-Sun`. – Patrick Dark Mar 26 '19 at 15:45
  • @PatrickDark, I edited the answer, hopefully making it more understandable. – Henrik Apr 20 '23 at 12:55
12

You can also use day names like Mon for Monday, Tue for Tuesday, etc. It's more human friendly.

Cyril Bouthors
  • 1,224
  • 10
  • 7
  • This won't work for some distributions; testing with Ubuntu 14.04.3 LTS, I got "/tmp/crontab.Nuq9GE/crontab":24: bad day-of-week" – 0x4B1D Jan 06 '16 at 03:48
  • 5
    @Nikita check for typos or extra spaces. I have both a "Mon-Fri" and a "Thu" in my crontab on Ubuntu 14.04.3 and both work just fine. I suspect if there's a space between any of the characters, you'd end up with an error. – Dale C. Anderson Feb 04 '16 at 18:15