Планувальник завдань Cron

cron — утиліта в операційних системах Unix і Linux, яка дозволяє користувачам виконувати команди або скрипти (групи команд) автоматично в заданий час.

Усе, що написано далі, стосується у першу чергу ОС Linux, та, за незначними відмінностями, справедливе і для інших UNIX-систем.

Налаштування cron міститься у спеціальному файлі конфігурації crontab. Загальний файл системи знаходиться у каталозі /etc/. Індивідуальні файли налаштувань користувачів - у домашніх каталогах /home/username/. Однак, у цьому випадку, ім'я файлу буде відмінним, і буде складатися з імені користувача та розширення .cron. Наприклад, для користувача з іменем username повний шлях до індивідуального файлу налаштування cron буде /home/username/username.cron.

Проте, для перегляду чи внесення змін у файли налаштувань, немає необхідності відкривати їх у текстовому редакторі, самостійно вказуючи необхідний файл. Для роботи з налаштуваннями cron призначена команда crontab:

crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
-e (редагувати користувацький crontab)
-l (переглянути користувацький crontab)
-r (видалити користувацький crontab)
-i (запитати перед видаленням користувацького crontab)

Самі записи завдань складаються з шести полів:

.---------------- хвилина (0 - 59)
| .------------- година (0 - 23)
| | .---------- день місяця (1 - 31)
| | | .------- місяць (1 - 12) АБО jan,feb,mar,apr ...
| | | | .---- день тижня (0 - 6) (неділя=0 чи 7) АБО sun,mon,tue,wed,thu,fri,sat
| | | | |
* * * * * команда

Коментарем вважається частина стрічки, що починається з символу #

Є кілька способів визначення кількох значень часу для однієї команди:

  • Кома (',') оператор визначає список значень, наприклад: 1,3,4,7,8
  • Тире ('-') оператор визначає діапазон значень, наприклад: 1-6, (теж саме що і 1,2,3,4,5,6)
  • Зірочка ('*') оператор визначає всі можливі значення. Наприклад, друга зірочка означає кожну годину.
  • Зірочка з дільником ('*/X') оператор визначає виконання команди кожну X хвилину/годину/день/місяць/день тижня.

Приклад:

01 00 * * * команда # Кожний день через одну хвилину після півночі виконати команду команда

З написаного випливає, що мінімальний період запуску команди становить одна хвилина:

*/1 * * * команда # Виконувати команду команда кожної хвилини

Однак, є спосіб обійти це обмеження завдяки можливості виконання серії команд та утиліти затримки sleep. Повний шлях до утиліти: /bin/sleep.

sleep 5
призупинитись на 5 секунд
sleep 5h
призупинитись на 5 годин
sleep 3h; команда
Призупинитись на 3 години, а пізніше виконати команду команда

Отже, наприклад для того, щоб виконати команду кожних XX секунд, у crontab необхідно внести запис:

*/1 * * * * команда1; /bin/sleep 30; команда1 # Виконувати команду команда1 кожних 30 секунд
*/1 * * * * команда2; /bin/sleep 20; команда2; /bin/sleep 20; команда2 # Виконувати команду команда2 кожних 30 секунд
*/1 * * * * команда3; /bin/sleep 15; команда3; /bin/sleep 15; команда3; /bin/sleep 15; команда3 # Виконувати команду команда3 кожних 15 секунд

Цей нескладний прийом суттєво розширює можливості планувальника завдань сron.

Джерело: Планувальник завдань Cron

Додати новий коментар

Фото Капча
Введіть символи з картинки.