cron — утиліта в операційних системах Unix і Linux, яка дозволяє користувачам виконувати команди або скрипти (групи команд) автоматично в заданий час. Назва cron походить від грецького слова χρόνος (chronos), що означає «час», помилково записаного як cron Кеном Томпсоном.
Файл завдань crontab
Кожен користувач системи має свій файл завдань crontab
(за даними деяких джерел, назва файлу походить від cron table), в якому описано, в який час і які команди і програми запускати від імені цього користувача.
Параметри запуску 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
) - Зірочка (
'*'
) оператор визначає всі можливі значення. Наприклад, друга зірочка означає кожну годину. - Слеш (
'/'
) оператор визначає крок значень, наприклад:*/6
, (теж саме що 0,6,12,18,24....)
Нестандартні макроси
Деякі реалізації cron
підтримують наступні нестандартні макроси:
Макрос | Опис | Еквівалент |
---|---|---|
@yearly (або @annually) | Виконання щороку опівночі 1 січня | 0 0 1 1 * |
@monthly | Виконання щомісяця опівночі першого числа | 0 0 1 * * |
@weekly | Виконання щотижня опівночі (у неділю) | 0 0 * * 0 |
@daily (або @midnight) | Виконання кожної доби опівночі | 0 0 * * * |
@hourly | Виконання щогодини (на початку години) | 0 * * * * |
@reboot | Виконання під час запуску демона | N/A |
@reboot
обумовлює виконання під час запуску демона. Оскільки перезапуск самого cron
є нетиповим випадком, фактично виконання відбувається під час запуску оперційної системи, тобто простий перезапуск демону не призводить до виконання завдань, визначених у @reboot
. Така поведінка притаманна деяким реалізаціям cron
, наприклад у Debian.
@reboot
може використовуватись у випадку необхідності запуску завдання від користувача, якщо цей користувач не може змінити конфігурацію init для запуску відповідних програм.
Приклад
Щодня через одну хвилину після опівночі видалити вміст файлу /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"
Історія
Ранні версії
В Unix Версії 7 cron був написаний Браяном Керніганом і був демоном (програмою-сервісом). Він працював за простим алгоритмом:
- Прочитати crontab
- Якщо якась команда має поточну дату і час запускати її як root користувач.
- Чекати хвилину
- Повторити крок 1.
В університеті Пердью в кінці 1970-х років в експерименті для 100 користувачів система VAX з таким алгоритмом зазнала занадто велике навантаження.
Наступні версії 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.
Зноски
- What is the etymology of cron. Процитовано 23 грудня 2015.
- Origin of the word cron?. Архів оригіналу за 2 липня 2019. Процитовано 2 липня 2019.
- . The FreeBSD Project. Архів оригіналу за 1 лютого 2017. Процитовано 2 липня 2019.
- . Bugs.debian.org. Архів оригіналу за 2 липня 2019. Процитовано 6 листопада 2013.
Посилання
- Розумний крон [ 14 травня 2014 у Wayback Machine.] — сервіс розпізнає український текст і перетворює його у час виконання у форматі cron (укр.)
- Open Group's crontab specification [ 5 вересня 2005 у Wayback Machine.] — official UNIX 03 (англ.)
- ISC Cron 4.1 [ 12 жовтня 2006 у Wayback Machine.] (англ.)
- 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 [ 6 листопада 2008 у Wayback Machine.] пропонує інтерактивне отримання часу виконання команди crontab. (англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
cron utilita v operacijnih sistemah Unix i Linux yaka dozvolyaye koristuvacham vikonuvati komandi abo skripti grupi komand avtomatichno v zadanij chas Nazva cron pohodit vid greckogo slova xronos chronos sho oznachaye chas pomilkovo zapisanogo yak cron Kenom Tompsonom Fajl zavdan crontabKozhen koristuvach sistemi maye svij fajl zavdan crontab za danimi deyakih dzherel nazva fajlu pohodit vid cron table v yakomu opisano v yakij chas i yaki komandi i programi zapuskati vid imeni cogo koristuvacha Parametri zapusku crontab Dlya redaguvannya fajlu crontab vikoristovuyetsya specialna odnojmenna komanda crontab yaka dozvolyaye ne pererivati proces cron na chas redaguvannya e komanda zapuskannya fajlu crontab dlya jogo redaguvannya angl edit l komanda zapuskannya fajlu shob prodivitisya jogo zmist angl list r vidaliti crontab fajl dlya cogo koristuvacha vidaliti svij crontab angl remove Tablicya crontab Kozhnij ryadok u fajli crontab skladayetsya z p yati kolonok sho vidokremlyuyutsya probilami chi tabulyaciyami Stovpchiki zadayut chas vikonannya Hvilina Godina Den Misyac Den tizhnya v nih mozhe mistitisya chislo spisok chisel abo simvol Reshta simvoliv v ryadku interpretuyutsya yak vikonuvana komanda ta yiyi parametri hvilina 0 59 godina 0 23 den misyacya 1 31 misyac 1 12 ABO jan feb mar apr den tizhnya 0 6 nedilya 0 chi 7 ABO sun mon tue wed thu fri sat vikonuvana komandaOperatoriYe kilka sposobiv viznachennya kilkoh znachen chasu dlya odniyeyi komandi Koma operator viznachaye spisok znachen napriklad 1 3 4 7 8 Tire operator viznachaye diapazon znachen napriklad 1 6 tezh same sho i 1 2 3 4 5 6 Zirochka operator viznachaye vsi mozhlivi znachennya Napriklad druga zirochka oznachaye kozhnu godinu Slesh operator viznachaye krok znachen napriklad 6 tezh same sho 0 6 12 18 24 Nestandartni makrosi Deyaki realizaciyi cron pidtrimuyut nastupni nestandartni makrosi Makros Opis Ekvivalent yearly i abo i annually Vikonannya shoroku opivnochi 1 sichnya 0 0 1 1 monthly Vikonannya shomisyacya opivnochi pershogo chisla 0 0 1 weekly Vikonannya shotizhnya opivnochi u nedilyu 0 0 0 daily i abo i midnight Vikonannya kozhnoyi dobi opivnochi 0 0 hourly Vikonannya shogodini na pochatku godini 0 reboot Vikonannya pid chas zapusku demona N A reboot obumovlyuye vikonannya pid chas zapusku demona Oskilki perezapusk samogo cron ye netipovim vipadkom faktichno vikonannya vidbuvayetsya pid chas zapusku opercijnoyi sistemi tobto prostij perezapusk demonu ne prizvodit do vikonannya zavdan viznachenih u reboot Taka povedinka pritamanna deyakim realizaciyam cron napriklad u Debian reboot mozhe vikoristovuvatis u vipadku neobhidnosti zapusku zavdannya vid koristuvacha yaksho cej koristuvach ne mozhe zminiti konfiguraciyu init dlya zapusku vidpovidnih program Priklad Shodnya cherez odnu hvilinu pislya opivnochi vidaliti vmist fajlu www apache logs error log 01 00 cat dev null gt www apache logs error logZminni seredovishaZminni seredovisha sho vplivayut na robotu cron HOME shlyah do domashnoyi direktoriyi koristuvacha LOGNAME im ya koristuvacha dlya vhodu v sistemu PATH shlyah poshuku standartnih instrumentiv SHELL shlyah do obolonki komandnogo interpretatora EDITOR i VISUAL nazva tekstovogo redaktora sho vikoristayetsya dlya redaguvannya crontab Za zamovchuvannyam cim redaktorom bude Vi LANG LC ALL LC CTYPE LC MESSAGES zminni dlya internacionalizaciyi Priklad fajlu crontab Yak zvichajno z simvolu pochinayutsya komentari Yak komandnij interpretator vikoristovuvati bin sh SHELL bin sh Rezultati roboti nadsilati na cyu adresu MAILTO my example org Dodati v PATH PATH PATH HOME bin Tut pochinayutsya zavdannya Vikonuvati kozhen den v 0 godin 5 hvilin rezultat skladati v log daily 5 0 HOME bin daily job gt gt HOME log daily 2 gt amp 1 Vikonuvati pershogo chisla kozhnogo misyacya 15 14 1 HOME bin monthly Vikonuvati kozhnogo robochogo dnya v 22 00 0 22 1 5 echo Pora dodomu 23 2 echo Vikonuyetsya v 0 23 2 23 4 23 i t d 5 4 sun echo Vikonuyetsya v 4 05 v nedilyu 0 0 1 1 echo Z novim rokom 15 10 13 1 4 echo Cej napis vivoditsya v ponedilok i chetver v 10 15 ta 13 15 IstoriyaRanni versiyi V Unix Versiyi 7 cron buv napisanij Brayanom Kerniganom i buv demonom programoyu servisom Vin pracyuvav za prostim algoritmom Prochitati crontab Yaksho yakas komanda maye potochnu datu i chas zapuskati yiyi yak root koristuvach Chekati hvilinu Povtoriti krok 1 V universiteti Perdyu v kinci 1970 h rokiv v eksperimenti dlya 100 koristuvachiv sistema VAX z takim algoritmom zaznala zanadto velike navantazhennya Nastupni versiyi cron buli stvoreni z metoyu rozshiriti mozhlivosti dlya sistemi Unix yaka maye bagatoh koristuvachiv Algoritm yakij vikoristovuyetsya v cih cron viglyadaye takim chinom Na pochatkovomu etapi abo koli ye zmini znajti crontab fajli dlya vsih koristuvachiv sistemi Dlya kozhnogo crontab viznachiti koli v majbutnomu komanda povinna buti vikonana Dodati cyu komandu do spisku komand za chasom Osnovnij cikl Viznachiti koli v majbutnomu komanda z spisku povinna buti zapushena Spati protyagom cogo chasu Po probudzhennyu i pislya perevirki pravilnosti chasu vikonati komandu z privileyami koristuvacha yakij volodiye fajlom crontab Viznachiti koli v majbutnomu komanda z spisku povinna buti zapushena Suchasni versiyi Zaraz isnuye dekilka riznih utilit z funkcionalnistyu cron Najposhirenishim z nih ye Vixie cron stvoreno 1987 roku Versiya 3 Vixie cron bula vipushena v kinci 1993 roku Z versiyi 4 1 v sichni 2004 roku vona bula perejmenovana v ICS Cron Versiya 3 z deyakimi dribnimi vipravlennyami vikoristovuyetsya v bilshosti distributiviv Linux i sistemah BSD Inshi populyarni realizaciyi cron anacron i fcron anacron dozvolyaye vikonati komandu navit yaksho chas dlya zapusku bulo propusheno napriklad komp yuter bulo vimkneno anacron ne ye samostijnoyu i vimagaye nayavnosti cron ZnoskiWhat is the etymology of cron Procitovano 23 grudnya 2015 Origin of the word cron Arhiv originalu za 2 lipnya 2019 Procitovano 2 lipnya 2019 The FreeBSD Project Arhiv originalu za 1 lyutogo 2017 Procitovano 2 lipnya 2019 Bugs debian org Arhiv originalu za 2 lipnya 2019 Procitovano 6 listopada 2013 PosilannyaRozumnij kron 14 travnya 2014 u Wayback Machine servis rozpiznaye ukrayinskij tekst i peretvoryuye jogo u chas vikonannya u formati cron ukr Open Group s crontab specification 5 veresnya 2005 u Wayback Machine official UNIX 03 angl ISC Cron 4 1 12 zhovtnya 2006 u Wayback Machine angl CVSweb for FreeBSD s cron Vixie cron 3 0 angl ACM Digital library Franta Maly An efficient data structure for the simulation event set requires ACM pubs subscription angl Cron Sandbox at HxPI 6 listopada 2008 u Wayback Machine proponuye interaktivne otrimannya chasu vikonannya komandi crontab angl