cron
cron — це назва утиліти в операційних системах Unix і Linux, яка дозволяє користувачам виконувати команди або скрипти (групи команд) автоматично в заданий час.
Зміст |
Назва [ред.]
Назва походить від грец. Chronos — час. (Див. Хронос) або англ. Chronograph (Див. en:Chronograph). [1]
crontab [ред.]
Кожен користувач системи має свій файл завдань «crontab» (cron табулятор), в якому описано, в який час і які команди і програми запускати від імені цього користувача.
Параметри запуску crontab [ред.]
Для редагування файлу crontab використовується спеціальна однойменна команда crontab, яка дозволяє не переривати процес cron на час редагування:
-е— команда запускання файлу crontab для його редагування. (англ. edit)-l— команда запускання файлу щоб продивитися його зміст. (англ. list)-r— видалити crontab файл для цього користувача (видалити свій crontab) . (англ. remove)
Таблиця crontab [ред.]
Кожний рядок у файлі 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) - Зірочка (
'*') оператор визначає всі можливі значення. Наприклад, друга зірочка означає кожну годину.
Приклад [ред.]
Кожний день через одну хвилину після півночі видалити вміст файлу /www/apache/logs/error_log:
01 00 * * * cat /dev/null > /www/apache/logs/error_log
Змінні середовища [ред.]
Змінні середовища що впливають на роботу cron
- HOME — шлях до домашньої директорії користувача.
- LOGNAME — ім'я користувача для входу в систему.
- PATH — шлях пошуку стандартних інструментів.
- SHELL — шлях до оболонки командного інтерпретатора.
- EDITOR i VISUAL — назва текстового редактора що використається для редагування crontab. За замовчуванням цим редактором буде Vi.
- LANG, LC_ALL, LC_CTYPE, LC_MESSAGES змінні для інтернаціоналізації.
Приклад файлу crontab [ред.]
#Як звичайно, з символу # починаються коментарі # Як командний інтерпретатор використовувати /bin/sh: SHELL=/bin/sh # Результати роботи надсилати на цю адресу MAILTO=my@example.org # Додати в PATH PATH=$PATH:$HOME/bin # # # # Тут починаються завдання # Виконувати кожен день в 0 годин 5 хвилин, результат складати в log/daily: 5 0 * * * $HOME/bin/daily.job>> $HOME/log/daily 2> & 1 # Виконувати першого числа кожного місяця: 15 14 1 * * $HOME/bin/monthly # Виконувати кожного робочого дня в 22:00: 0 22 * * 1-5 echo "Пора додому" 23 */2 * * * echo "Виконується в 0:23, 2:23, 4:23 і т. д." 5 4 * * sun echo "Виконується в 4:05 в неділю" 0 0 1 1 * echo "З новим роком!" 15 10,13 * * 1,4 echo "Цей напис виводиться в понеділок і четвер в 10:15 та 13:15"
Історія [ред.]
Ранні версії [ред.]
cron Unix Версії 7, був написаний Браєном Керніганом і був демоном (програмою-сервісом). Його алгоритм був простий:
- Читати crontab
- Якщо якась команда має поточну дату і час запускати її як root користувач.
- Спати протягом однієї хвилини
- Повторіть крок 1.
В університеті Пердью в кінці 1970-х років в експерименті для 100 користувачів система VAX з таким cron зазнала занадто велике навантаження.
Наступні версії cron були створені з метою розширити можливості для системи Unix яка має багатьох користувачів. Алгоритм, який використовується в цих cron, виглядає таким чином:
- На початковому етапі або коли є зміни знайти crontab файли для всіх користувачів системи.
- Для кожного crontab визначити коли в майбутньому команда повинна бути виконана.
- Додати цю команду до списку команд за часом
- Основний цикл:
- Визначити коли в майбутньому команда з списку повинна бути запущена.
- Спати протягом цього часу.
- По пробудженню і після перевірки правильності часу, виконати команду з привілеями користувача, який володіє файлом crontab.
- Визначити коли в майбутньому команда з списку повинна бути запущена.
Сучасні версії [ред.]
Зараз існує декілька різних утиліт з функціональністю cron. Найпоширенішим з них є Vixie cron (створено 1987 року). Версія 3 Vixie cron була випущена в кінці 1993 року. З версії 4.1 в січні 2004 року вона була перейменована в ICS Cron. Версія 3 з деякими дрібними виправленнями використовується в більшості дистрибутивів Linux і системах BSD.
Інші популярні реалізації cron — anacron і fcron. anacron дозволяє виконати команду навіть якщо час для запуску було пропущено (наприклад, комп'ютер було вимкнено). anacron не є самостійною і вимагає наявності cron.
Посилання [ред.]
- Open Group's crontab specification — official UNIX 03 (англ.)
- ISC Cron 4.1 (англ.)
- CVSweb for FreeBSD's cron — Vixie cron 3.0 (англ.)
- ACM Digital library — Franta, Maly, «An efficient data structure for the simulation event set» (requires ACM pubs subscription) (англ.)
- Cron Sandbox at HxPI пропонує інтерактивне отримання часу виконання команди crontab. (англ.)
|
||||||||||||||||||||||||||||||||
