crontab день недели против дня месяца?
Я добавил это в /etc/crontab на нескольких разных системах linux и freebsd:
# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * 2 root /sbin/shutdown -r now
Я хочу перезагрузку 3-го вторника каждого месяца. Однако все системы перезагрузились в 3-ю среду этого месяца (19-е).
Что я делаю неправильно?
Обновление: благодаря ответу Рэнона ниже, похоже, что приведенная ниже ревизия будет работать, кто-нибудь может подтвердить или есть еще лучший способ сделать это?
# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * * root test $(date +\%u) -eq 2 && /sbin/shutdown -r now
1 ответ
Посмотри на man 5 crontab
,
Примечание. День выполнения команды может быть задан двумя полями: день месяца и день недели. Если оба поля ограничены (т. Е. Не *), команда будет запущена, когда любое из полей соответствует текущему времени. Например, ``30 4 1,15 * 5'' будет запускать команду в 4:30 утра 1-го и 15-го числа каждого месяца плюс каждую пятницу. Однако можно достичь желаемого результата, добавив тест к команде (см. Последний пример в ПРИМЕРЕ КРОНА-ФАЙЛА ниже).
Таким образом, ваши серверы должны перезагружаться каждый день с 15-21 и каждый вторник.
Посмотрите на пример manpages:
# Run on every second Saturday of the month
0 4 8-14 * * test $(date +%u) -eq 6 && echo "2nd Saturday"