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