Ми використовуємо 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 секунд.