1

Я видел немало вопросов, связанных с настройкой CronExpressions. Но все они, кажется, имеют точные часы (без указания минут) в качестве временного интервала для запуска.

Есть ли способ настроить CronExpression для запуска, скажем, каждые 5 минут каждого дня между 7:37 AM и 9:13 PM? Настройка для 7 утра - 9 вечера проста. Но я не могу понять, есть ли способ (возможно, он даже не поддерживается) работать по более детальному расписанию.

У меня есть приложение, которое позволяет пользователям указывать собственные графики. Прямо сейчас я округляю вверх / вниз до ближайшего "целого часа", так как не могу понять, как делать определенное время.

Так, например, это работает

0 0/5 2-16? * 1-7 // выполняется каждые 5 минут с 2:00 до 16:00 каждый день недели

Итак, каким будет выражение, если я хочу запустить:

каждые 5 минут с 2:19 до 16:13?

Или это просто невозможно (не считая создания нескольких CronExpressions и превращения их в беспорядочный imo)

Любая помощь, с благодарностью!

1 ответ1

0

Если вы введете man 5 crontab вы увидите следующий пример:

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

Применяя это к вашему делу:-

   0 0/5 2-16 ? * 1-7  test $(date +\%R) \> 02:19 -a $(date +\%R) \< 16:13 && YourCommand

В качестве альтернативы, если YourCommand является сценарием, вы можете включить в него временные тесты.

Обратите внимание, что, поскольку команда вызывается с кратностью 5 минут после часа, тесты для > и >= эквивалентны (аналогично < и <=); в противном случае вам может потребоваться изменить границы теста (например, >= 02:18), поскольку test не поддерживает >= и <= в сравнениях строк.

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