Как мне запустить задание cron каждые 72 минуты? Или какой-то не очень красивый номер, как этот?
Как выполнять задание cron каждые 72 минуты
Ответы (7)
Поскольку cron
запускает задания на основе времени, а не интервала, не существует невероятно простого способа сделать это. Однако, несмотря на то, что это немного хак, вы можете настроить несколько строк в crontab
, пока не найдете общий знаменатель. Поскольку вы хотите, чтобы задание выполнялось каждые 72 минуты, оно должно выполняться в следующие моменты времени:
- 00:00
- 01:12
- 02:24
- 03:36
- 04:48
- 06:00
- 07:12
- ...
Как видите, шаблон повторяется каждые 6 часов с 5 заданиями. Итак, у вас будет 5 строк в вашем crontab
:
0 0,6,12,18 * * * command 12 1,7,13,19 * * * command 24 2,8,14,20 * * * command 36 3,9,15,21 * * * command 48 4,10,16,22 * * * command
Другим вариантом, конечно же, является создание демона-оболочки или сценария оболочки, который выполняется и приостанавливается в течение желаемого времени, пока не будет остановлен.
Используйте at (человек at). Пусть ваше приложение или сценарий запуска рассчитает время запуска через 72 минуты и запланирует повторный запуск, прежде чем оно начнет работать.
Доступно также в Windows XP и Vista.
Вот пример для gnu/linux: at -f command.sh сейчас + 72 минуты
Вы всегда можете использовать подход, запускающий cron каждую минуту, и ваш скрипт немедленно завершает работу, если он был запущен позже, чем 72 минуты назад.
Не используйте крон...
#!/bin/sh
while [ true ]
do
sleep 4320
echo "Put your program here" &
done
Вы не можете сделать это напрямую из cron/crontab.
Задания Cron запускаются по определенному расписанию, а не через определенный интервал.
Одним из вариантов может быть составление расписания, которое приблизительно соответствовало бы вашим «каждым 72 минутам», запустив его в полночь, 1:12, 2:24, 3:36, ..., и растянув его примерно до полуночи. В вашем файле crontab все это время может быть указано как время выполнения.
Другой альтернативой может быть отдельное приложение, обрабатывающее планирование и запускающее ваше приложение.
Для этого нужно поставить ровно 20 задач — т.е. поставить одну на 00:00, следующую на 01:12, следующую на 02:24 и т. д.
20 итераций составляют полный день.
К сожалению, это единственный способ сделать это, т.к. задачи cron заранее настраиваются по фиксированному расписанию, а не запускаются, скажем, "через X минут была выполнена последняя задача".
Э-э, я знаю, что это давно назрело, но я просматривал некоторые проблемы с расписанием и увидел этот вопрос.
Просто сделайте это в своем crontab
*/72 * * * * /home/script.sh
*/72 * * * * date >> cron-over-72.out
под CentOS 7: задание выполняется один раз в час, в час.
- person CODE-REaD; 06.02.2020