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:
Эта работа начинается в 10-00 утра каждого понедельника:
@Scheduled(cron = "0 0 10 * * MON")
Эта работа начинается в 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