it-swarm.com.ru

Crontab Синтаксис дня недели

В crontab поле День недели запускается из 0 - 6 или 1 -7?

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

Кроме того, что может быть следствием или неправильно использовать 0 или 7? т. е. будет ли работать cron?

161
Marty Wallace

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 .

305
fedorqui
    :-) 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 (диапазоны должны начинаться с меньшего числа и заканчиваться более высоким). Сокращения не могут использоваться для определения диапазона дня недели.

92
Henrik

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

7
Cyril Bouthors

Используя Spring:

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

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

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

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

0
Taras Melnyk