Crontab / Запуск cronjob в первое воскресенье в месяц

Возможный дубликат:
cron: как планировать запуск первого воскресенья каждого месяца

Я хочу выполнить php-скрипт в каждое первое воскресенье месяца в 7 утра. Я ввел следующую строку на серверах crontab.

0 7 1-7 * 0 user /path/to/script.php 

Сегодня я увидел, что сценарий действительно работал в среднесрочное утро. Как это могло случиться? Я думал, что последние 0 определяют воскресенье?

Благодарим вас за помощь в продвижении.

На странице руководства:

Команды выполняются cron (8), когда поля минуты, часа и месяца года соответствуют текущему времени, и когда по крайней мере одно из двух дневных полей (день месяца или день недели) соответствует текущему времени (см. «Примечание» ниже).

и позже:

Примечание. День выполнения команды может быть задан двумя полями: день месяца и день недели. Если оба поля ограничены (т. Е. Не являются *), команда будет выполняться, когда любое поле совпадает с текущим временем. Например, “ 30 4 1,15 * 5 '' заставит команду запускаться в 4:30 утра 1 и 15 числа каждого месяца плюс каждую пятницу.

Другими словами, ваш скрипт работает с 1-го по 7-й, а также в любое воскресенье.

Поля 3 и 5 не работают вместе, как вы предполагаете.

Вам нужно будет установить поле 5 на * и изменить ваш скрипт php, чтобы проверить, является ли текущий день воскресным, прежде чем он будет продолжен.

Спецификация вашего cron:

 0 - run at minute 0 7 - run at hour 7 1-7 - run on days 1,2,3,4,5,6,7 * - all months 0 - day 0 of the week 

Я не думаю, что вы можете ограничить его только первым типом дня с помощью инструментов, доступных в cron. Вы можете попробовать

 0 7 * * 0 

который запускал каждое воскресенье, но нет способа сказать «только в первое воскресенье», так что это будет работать каждое воскресенье. Однако вы можете изменить свой скрипт, чтобы проверить, в какое воскресенье оно выполняется, и просто выйти, если он не первый.