1

У меня вопрос. У нас есть работа cron, которая была выполнена 15 числа этого месяца:

min hr day month day_of_week
35  13 15  6     6

Тем не менее, он снова был исполнен 22 июня (это был 6-й день недели). Будет ли day_of_week иметь приоритет над днем и месяцем, которые уже были установлены ранее?

1 ответ1

3

Хотя обычно задание выполняется, когда все поля спецификации времени / даты соответствуют текущему времени и дате, есть одно исключение: если и "день месяца", и "день недели" ограничены (не «*»), то либо поле "день месяца" (3) или поле "день недели" (5) должны соответствовать текущему дню

https://en.wikipedia.org/wiki/Cron

Так происходит только в июне, в 13:35. Кроме того, это должно быть либо 15 июня, либо 6-й день недели. Оба сразу будут работать.

Запуск man 5 crontab предоставит вам некоторую дополнительную информацию, они рекомендуют использовать test чтобы указать конкретную дату и ограничить день недели:

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

[...]

# Run on every second Saturday of the month
0 4 8-14 * *    test $(date +\%u) -eq 6 && echo "2nd Saturday"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .