Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
Новый дизайн
Панель управления
  • Русский
  • Українська
  • English
  • UAH
  • USD
  • RUB
  • EUR
  • 0-800-307-307  Горячая линия
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

2.11.10. Нестандартные задачи cron

В рамках cron-задач реализовать какой-либо нестандартный интервал или с указанием ожидания выполнения другой команды невозможно. Сам по себе crontab может использовать расписание только с точностью до минуты, при этом указать определённое количество секунд нельзя. Также задачи не могут запускаться по порядку выполнения, то есть ожидая, пока закончится предыдущая задача и после запускать следующую. Для реализации подобного можно воспользоваться полезными возможностями bash.

Для последовательного запуска двух команд необходимо указать в задаче обе команды, разделив их символом ;. Подобное указание будет работать как выполнение очередности команд вида:

command1 ; command2 ; ... ; commandn

Выполнение следующей команды произойдет в любом случае, даже если предыдущая вернула ошибку.

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

  • && — выполнить следующую команду только в том случае, если предыдущая была выполнена успешно.
  • || — выполнить следующую команду только в том случае, если предыдущая НЕ была выполнена успешно и вернула ошибку.

Пример использования следующий:

command1 ; command2 && command3 || command4

Выполняться команды будут в следующем порядке и условиях: command1 и command2 будут выполнены в любом случае, но command3 будет выполнена только при условии, если command2 выполнена без ошибок. command4 выполнится только в том случае, если при выполнении command3 будет возвращена ошибка.

Важные моменты:

  • cron-задачи не запускаются в самом начале минуты, довольно часто задача может быть запущена на первых секундах минуты или позже, в связи с чем указать точное время запуска проблематично.
  • Не стоит задавать слишком большое значение для ожидания, так как время выполнения команды ограничено, в рамках виртуального хостинга максимальное время выполнения процесса равно 1 часу, для бизнес хостинга это значение равно 4 часам.
  • Настоятельно не рекомендуем использовать задачи с крайне маленьким интервалом запуска, так как это чревато чрезмерным потреблением серверных ресурсов, а также является нарушением условий предоставления услуг п. 5.8.

Как было указано ранее — crontab не имеет возможности настройки выполнения в точности до секунды, в связи с чем приходится прибегать к разным ухищрениям, например указание последовательного выполнения нескольких команд с использованием команды ожидания. К примеру следующая команда будет запущена через 30 секунд после ее выполнения:

sleep 30 ; command1

Если необходимо запустить две задачи в начало минуты и в 30 секунд той же минуты, то следует добавить две задачи с одинаковым интервалом, но в одну из них указать sleep 30 ; command1, где command1 необходимая к выполнению задача. В таком случае выполнение второй задачи будет отложено на 30 секунд.