13

Я добавил это в /etc /crontab на нескольких разных системах linux и freebsd:

# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * 2 root /sbin/shutdown -r now

Я хочу перезагрузку в третий вторник каждого месяца. Однако все системы перезагрузились в 3-ю среду этого месяца (19-е).

Что я делаю неправильно?

Обновление: благодаря ответу Ранона ниже, похоже, что приведенная ниже ревизия сработает, кто-нибудь может подтвердить или есть еще лучший способ сделать это?

# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * * root test $(date +\%u) -eq 2 && /sbin/shutdown -r now

1 ответ1

14

Посмотрите на man 5 crontab .

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

Таким образом, ваши серверы должны перезагружаться каждый день с 15-21 и каждый вторник.

Посмотрите на пример manpages:

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

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