определение даты crontab только для второй среды месяца

Как определить дату crontab только для второй среды (каждого месяца)? Буду признателен за вашу помощь.

2
задан 31 August 2021 в 19:32

2 ответа

Вы запросили cron, поэтому только используя cron, вы можете сделать это, используя дату bash в качестве 2-го теста:

0   0  8-14 *   *   [ "$(date '+\%u')" = "3" ] && {your script}
  • В каждый час дней с 8 по 14
  • , а затем проверьте среду с датой bash. Номер 3 — среда

Комментарий от Сорена А немного неправильный (НО страница человека также неверна). 0 0 8-14 * СР = «В 00:00 каждого дня месяца с 8 по 14 и в среду». Из последней ссылки:

Совет 1: Если часть дня месяца или дня недели начинается со *, они образуют пересечение. В противном случае они образуют союз. * * 3 * 1 запускается в 3-й день месяца и в понедельник (союз), тогда как * * */2 * 1 работает каждый второй день месяца, только если это также понедельник (перекресток). manpage неверна в отношении этой детали. Дополнительная информация.

3
ответ дан 4 September 2021 в 09:24

Крон может не делать это изначально, но системный таймер может.

Синтаксис cron 0 0 8-14 * Ср будет не работать. Он будет матчи каждую среду, а также каждый день между 8-м и 14-м. Как сказано на странице crontab

День выполнения команды может быть указан двумя полями — днем месяца и днем недели. Если оба поля ограничены (т.е. не начинайте с *), команда будет запущена, когда поле либо совпадает с текущим временем.

Системные таймеры обрабатывают логику по-разному и могут делать то, что вы хотите. Этот синтаксис будет соответствовать полуночи во вторую среду каждого месяца.

OnCalendar=Wed *-*-8..14 00:00:00

Links

3
ответ дан 4 September 2021 в 09:24

Другие вопросы по тегам:

Похожие вопросы: