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

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

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

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

5 ответов

Решение

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.

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

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

Используя Spring:

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

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

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

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

Для запуска cron в AWS

День недели 1-7 или вс-сб

      1 - SUN      Sunday
2 - MON      Monday
3 - TUE      Tuesday
4 - WED      Wednesday
5 - THU      Thursday
6 - FRI      Friday
7 - SAT      Saturday

источник: https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html

Другие вопросы по тегам