Как выполнять работу cron каждые 72 минуты - PullRequest
14 голосов
/ 14 апреля 2009

Как бы мне заставить задание cron запускаться каждые 72 минуты? Или какой-то не такой красивый номер?

Ответы [ 7 ]

36 голосов
/ 14 апреля 2009

Поскольку 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

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

25 голосов
/ 14 апреля 2009

Используйте в (человек в). Попросите ваше приложение или сценарий запуска рассчитать время запуска через 72 минуты в будущем и запланируйте сам запуск снова, прежде чем он начнет работать.

Доступно на Windows XP и Vista тоже.

Вот пример для gnu / linux: at -f command.sh сейчас + 72 минуты

4 голосов
/ 14 апреля 2009

Вы всегда можете использовать метод запуска cron каждую минуту и ​​немедленного выхода из вашего скрипта, если он был запущен более 72 минут назад.

3 голосов
/ 14 апреля 2009

Вы не можете напрямую сделать это из cron / crontab.

Задания Cron выполняются по определенному расписанию, а не через определенный интервал.

Одной из альтернатив будет составить расписание, которое приблизительно соответствует вашим «каждые 72 минуты», запустив в полночь 1:12, 2:24, 3:36, ... и вытянув его, чтобы приблизиться к достижению полночь. Ваш файл crontab может указывать все эти времена как время выполнения.

Другой альтернативой может быть отдельное приложение, которое обрабатывает планирование и запускает ваше приложение.

2 голосов
/ 24 апреля 2009

Не используйте cron ...

#!/bin/sh
while [ true ] 
do
     sleep 4320
     echo "Put your program here" &
done
2 голосов
/ 14 апреля 2009

Для этого вам нужно будет установить ровно 20 задач, то есть одну в 00:00, следующую в 01:12, следующую в 02:24 и т. Д.

20 итераций составляют целый день.

К сожалению, это единственный способ сделать это, поскольку задачи cron устанавливаются заранее по фиксированному расписанию, а не запускаются, скажем, «через X минут, когда была выполнена последняя задача».

0 голосов
/ 04 августа 2009

Э-э, я знаю, что это давно пора, но я смотрел на некоторые вопросы планирования и видел этот вопрос.

Просто сделайте это в вашем crontab

* / 72 * * * * /home/script.sh

...