2013-09-20 5 views
102

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

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

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

ответ

204

0 и 7 Оба стенда на воскресенье, вы можете использовать тот, который хотите, поэтому запись 0-6 или 1-7 имеет тот же результат (см. Комментарии в коде ниже для лучшего примера).

Число от 1 до 6 фиксировано до Monday, ..., Saturday.

Графически:

┌────────── 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 

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

Наконец, если вы хотите чтобы указать день за днем, вы можете разделить дни запятыми, например SUN,MON,THU будет вызывать команду только по воскресеньям, по понедельникам в четверг.

Дополнительная информация о Wikipedia.

+4

OK THATS что я не понял, воскресенье может быть 0 или 7. спасибо –

+4

Помните, что вы не можете делать: 'Sat-Sun', только' 6-7' или 'Sat, Sun' – pkowalczyk

7

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

+0

Это не сработает для некоторых дистрибутивов; тестирование с Ubuntu 14.04.3 LTS, я получил «/tmp/crontab.Nuq9GE/crontab":24: плохой день недели» – 0x4B1D

+2

@ Никита проверяет наличие опечаток или лишних пробелов. У меня есть как «Пн-Пт», так и «Thu» в моем crontab на Ubuntu 14.04.3, и оба работают нормально. Я подозреваю, что между любыми символами есть пробел, вы получите ошибку. –

64

Согласно Cyril Bouthors answer здесь список на английском сокращенный день недели, который может быть использован вместо чисел:

0 -> Sun 

1 -> Mon 
2 -> Tue 
3 -> Wed 
4 -> Thu 
5 -> Fri 
6 -> Sat 

7 -> Sun 

Имея два номера для воскресенья (0 и 7) может быть полезны для запись диапазонов рабочих дней начиная с 0 или заканчивая 7.

Примеры номер или Аббревиатура Использование

Следующие четыре примера будут делать все то же самое и выполнить команду каждую пятницу, субботу и воскресенье в 9.15 часов:

15 09 * * 5,6,0    command 
15 09 * * 5,6,7    command 
15 09 * * 5-7    command 
15 09 * * Fri,Sat,Sun  command