Запускать работу cron каждые 5 минут между двумя

16803
pythonic metaphor

Есть ли способ указать задание, которое запускается каждые 5 минут между временем начала и окончания в рабочие дни в crontab?

Обновление Я считаю уместным, что мое время начала и окончания не в круглые часы. Таким образом, указание 9-5 в столбце часа недостаточно. Я хочу 9: 30-17: 30.

16

2 ответа на вопрос

22
Ignacio Vazquez-Abrams

Вам придется сделать это по кусочкам:

30-59/5 9 * * * script.sh */5 10-16 * * * script.sh 0-30/5 17 * * * script.sh 
1
a CVn

Если ответ Игнасио Васкеса-Абрамса на самом деле не работает для вас, например, потому что сценарию нужно большое количество параметров или критерии вызова не тривиальны (или не привязаны ко времени), то альтернативный подход состоит в том, чтобы сделать простой Сценарий оболочки, вызывайте скрипт оболочки через равные промежутки времени, и пусть скрипт оболочки проверяет текущее время и вызывает основной скрипт.

Например:

#/bin/bash  # Check to see if we should run the script now. HOUR=$(date +%H) MINUTE=$(date +%M) if test $HOUR -lt 9; then exit 0; fi if test $HOUR -eq 9 -a $MINUTE -lt 30; then exit 0; fi if test $HOUR -eq 17 -a $MINUTE -gt 30; then exit 0; fi if test $HOUR -gt 17; then exit 0; fi  # All checks passed; we should run the script now. exec script.sh ... long list of parameters ... 

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