Синтаксис дня Crontab Week of the Week

В crontab поле Day of the Week работает от 0 - 6 или 1 -7?

Я вижу противоречивую информацию об этом. wikipedia states 0-6 и другие сайты, которые я видел, это 1-7.

Также будет подразумеваться или использовать 0 или 7 неправильно? т.е. будет ли выполняться cron?

Ответ 1

0 и 7 означают воскресенье, вы можете использовать тот, который вам нужен, поэтому запись 0-6 или 1-7 дает одинаковый результат.

Кроме того, как предлагает @Henrik, можно заменить числа на сокращенные названия дней, такие как MON, THU и т. Д.:

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 будет выполнять команду только по воскресеньям, по понедельникам по четвергам.

Вы можете прочитать подробности в википедии о Cron.

Ответ 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

Как вы можете видеть выше, и, как сказано выше, номера 0 и 7 назначены на воскресенье. В списке перечислены также сокращенные дни недели на английском языке, которые также можно использовать в 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.

Подробно

Наличие двух чисел 0 и 7 для воскресенья может быть полезно для записи диапазонов дней недели, начиная с 0 или заканчивая 7. Таким образом, вы можете записывать диапазоны, начиная с воскресенья или заканчивая им, например, 0-2 или 5-7 (диапазоны должны начинаться с меньшего числа и заканчиваться более высоким). Сокращения не могут использоваться для определения диапазона дня недели.

Ответ 3

Вы также можете использовать имена дней, например Mon для понедельника, Tue для вторника и т.д. Это более дружелюбный человек.

Ответ 4

Использование Spring:

  1. Это задание начинается каждый понедельник в 10-00 утра:

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

  2. Эта работа начинается в 10-00 утра первого числа каждого месяца

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