LINUX.ORG.RU
решено ФорумAdmin

Проблема с настройкой времени выполнения скрипа через cron

 , ,


0

2

Есть специфический скрипт, выполнять который нужно каждые 55 минут(да, к сожалению, не каждый час, а именно 55 минут). Такой вариант:

 */55 * * * * date >> /etc/test/testCron 
работает некорректно (date >> /etc/test/testCron поставлено чисто для удобства логирования его работы).

Он выполняет скрипт ровно каждый час, когда количество минут == 0 и 55.

Насколько я понял, он делит текущее количество минут на 55 и если происходит деление без остатка, то скрипт выполняется. А мне же нужно, чтобы выполнение происходило каждые 55 минут, а не в 55 минуту каждого часа.

Конечно можно в исполняемый скрипт вставить такую конструкцию:

1) Удаляем данную задачу из cron

2) Рассчитываем время следующего выполнения

3) Записываем новую задачу с этим временем

Но может есть более правильный способ?

Наверное самое простое (без крона):

while true
do
код вашего скрипта...
sleep 3300
done

Bootmen ★★☆ ()

Можно ещё в скрипт добавить выполнение at с необходимыми параметрами. Тогда он сам себя будет запускать.

skyman ()
 */5 * * * * [ $(( $(date +%s) / 60 % 55 )) -eq 0 ] && date >> /etc/test/testCron
micronekodesu ★★ ()
* * * * * ID=myjob FREQ=55m date >> /etc/test/testCron


Вроде должно работать.

anc ★★★★★ ()
Ответ на: комментарий от micronekodesu

Применил пока это достаточно изящное решение, правда с небольшими изменениями. Cron отказывался выполнять команды с условиями, пришлось поместить условие внутрь скрипта.

D1MA12 ()
Ответ на: комментарий от D1MA12

Прочитайте мой ответ. Проблема с настройкой времени выполнения скрипа через cron (комментарий)
Это изящнее и работает из каробки, функционал самого крона, и без извратов.
запустил ради интереса в вашем варианте за исключением того что в команде указан скрипт.

Thu Jul  5 22:37:01 MSK 2018
Thu Jul  5 23:32:01 MSK 2018
Fri Jul  6 00:27:01 MSK 2018

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

Извините, ответ писал поздно ночью, ваш просто не заметил.

Такая конфигурация у меня срабатывает каждую минуту. Это же для dcron, верно? А что стоит на моём Ubuntu 16.04, я пока не разбирался.

D1MA12 ()
Ответ на: комментарий от D1MA12

Это же для dcron, верно?

Угу.

А что стоит на моём Ubuntu 16.04, я пока не разбирался.

Похоже не оно (юбутны в наличии нэма что бы посмотреть) но предполагаю что Vixie Cron. Вот гады, такой хороший функционал не используют. Ведь много хороших плюшек, в виде выполнить задачу после выполнения другой и т.д.

Приношу свои извинения, что не обратил внимание на дистр. Был не прав :)

anc ★★★★★ ()
Ответ на: комментарий от skyman

Век живи, век учись. Не знал что в нем нет такого функционала, не приходилось именно его (функционал) использовать на дебе.

anc ★★★★★ ()
Ответ на: комментарий от anc

Да, функционал был бы очень полезным, это точно. Но что поделать, буду вставлять костыли в скрипт. Спасибо за ответы.

D1MA12 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.