Как создать работу cron, которая выполняется каждые 3 месяца? - PullRequest
2 голосов
/ 06 ноября 2019

Я использую Hangfire в ASP.NET Core для Cron (повторяющихся) заданий , и мне нужно создать задание, которое запускается каждые три месяца, начиная с заданной даты начала.

Таким образом, если дата начала была 15 ноября 2019 года, она должна быть запущена 15 ноября 2019 года, 15 февраля 2020 года, 15 мая 2020 года и т. Д. И т. Д.

И мне нужно, чтобы он запускался каждые 3 месяца навсегда .

Поэтому я попробовал следующее выражение cron для этого: "0 0 15 11/3?"или "0 0 15 11/3 *"

Но после тестирования на этом переводческом сайте он сообщает, что будет работать в следующие даты:

2019-11-15
2020-11-15
2021-11-15
2022-11-15
2023-11-15

my cron expression after testing it

Итак, если это правда, то как заставить его работать каждые три месяца, начиная с 15 ноября 2019 года, как описано выше, и продолжать работать вечно?

1 Ответ

1 голос
/ 06 ноября 2019

Поле месяца в cron принимает число от 1 до 12;в зависимости от используемой реализации cron, вы можете использовать явный список для поля месяца:

0 0 15 2,5,8,11 *

или диапазон с шагом:

0 0 15 2-12/3 *

crontab.guru, кажется, поддерживаетодиночное значение с шагом, но в справочной странице crontab этот стиль не упоминается, поэтому он может работать или не работать:

0 0 15 2/3 *

Если вы хотитечтобы настроить его более чем на три месяца, прежде чем запускать его в первый раз, необходимо вручную проверить дату;в оболочке (используя GNU date) вы должны сделать что-то вроде этого:

0 0 15 2-12/3 * [ $(date +%%s) -gt $(date -d '2019-11-01' +%%s) ] && yourcommand

Это сравнивает текущую дату с 1 ноября 2019 года;если оно больше этого значения, команда запускается.

...