LINUX.ORG.RU

Задачка для Cron

 


0

1

Как можно сделать, чтобы задание Cron (бекап) выполнялось с задержкой 30 минут после включения компа, а затем каждые 10 минут?

Но только чтобы не в соответствии с текущим временем, как -

13:00, 13:10, 13:20, 13:30 и т.д.
а начиная с момента запуска компа.

Например, комп стартовал в 13:08.
Далее 1-е задание Cron должно выполнится в 13:38, а последующие соответственно каждые 10 минут, т.е. в
13:38, 13:48, 13:58, 14:08 и т.д.

★★★★★

1. sleep
2. получаем аптайм, переводим в минуты, делим на 10, проверяем остаток от деления, если равен нулю - запускаем, задача раз в минуту

slowpony ★★★★★
()

anacron.

Или с vixie-cron можно через каждые десять минут:

@600 /path/to/script

Тогда скрипт будет отрабатывать через десять минут после завершения предыдущей джобы. То есть, допустим, комп включили в 13:38, в 13:48 скрипт запустился, в 13:51 завершился, в 14:01 будет запущен в следующий раз. Таким образом скрипт никогда не будет запущен поверх уже работающего, сколько бы времени это ни заняло.

mord0d ★★★★★
()

Плюсую способы описанные выше. Чисто для разнообразия, способ, который будет работать вообще везде, даже без cron и anacron:

Тупо автозапускаем при загрузке скрипт, который тупо ждёт 30 минут, а затем в цикле: берёт текущее время за X, делает, что нужно, ждёт X + 10мин - нынешнее текущее время.

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

Нет, это костыль.

Точнее что он предлагает в принципе решает задачу, но пускать это через крон вместо написания rc-скрипта или systemd-сервиса — это уже костыль. Крон это не для запуска беспрерывно работающих демонов.

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

Ещё раз для особо упёртых: cron, конечно, контролирует запущенный процесс, но это всё ещё не супервайзинг; запускать им демон — использование не по назначению. Да, это работает, но без гарантий.

Крон работает следующим образом:

  • Запускается $SHELL;
  • В нём запускается процесс;
  • Ожидается его завершение;
  • stdout/stderr отправляется аттачем локальным email пользователю, от которого он был запущен;

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

mord0d ★★★★★
()