Cron

Cron е програма којашто овозможува автоматско извршување на наредби (за оперативни системи базирани на Unix (оперативен систем)), скрипти (група наредби) во точно определено време.

Како се покрева cron?

Cron е демон, што значи дека се покрева само еднаш за да потоа чека додека од него не биде побарано извршување на некое барање. Пример, веб опслужувачот е демон, којшто чека барање за приказ на одредена мрежна страница. Cron демонот, или crond, e неактивен се до времето кое е специфицирано во еден од неговите конфигурациски податотеки - crontabs.

Во најголемиот број на GNU/Linux дистрибуции, crond е автоматски инсталиран и е дел од почетните (start up) скрипти. За да видите дали е подигнат, внесете ја следнава наредба:

 [[email protected] saso]$ ps aux | grep crond
 root 1681 0.0 0.2 1944 508 ? S Dec15 0:00 crond
 saso 15034 0.0 0.2 4492 508 pts/26 S 14:17 0:00 grep crond

Првата линија покажува дека crond е подигнат, а втората линија е пребарувањето коешто го зададовме.

Ако не е подигнат, тоа може да се направи со crond. Процесот автоматски ќе се префрли за работа во позадина. Од сега па во иднина после превклучување на сметачот, crond ќе биде подигнат. Доколку не сакаме да го превклучуваме, неопходно е извршување на crond со root привилегии.

 [[email protected] saso]$ crond

Најголемиот број на демони (пр.: httpd и syslogd) потребно е да бидат превклучени по промена во нивните конфигурациски податотеки. Кај Cron тоа не е случај, промените автоматски се прифаќаат по внесувањето со crontab. Некои cron верзии вршат обнова на конфигурациските податотеки на секоја минута, некои бараат превклучување. Во Fedora, Red Hat и SUSE Linux дистрибуциите овие промени се приложуваат во моментот на нивното снимање.

Употреба на cron

Има неколку различни начини на употребата на cron. Во /etc директориумот може да се најдат следниве под директориуми именувани како:

'cron.hourly', 'cron.daily', 'cron.weekly' and 'cron.monthly'. Ако поставите скрипта во еден од овие директориуми, таа ќе биде извршена часовно, неделно или месечно, во зависност од директориумот во кој се наоѓа.

За поголема флексибилност, можно е уредување на /etc/crontab податотеката. Во Fedora и RadHat дистрибуциите crontab податотеката изгледа вака:

 [[email protected] /]$ cat /etc/crontab
 SHELL=/bin/bash
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
 MAILTO=root
 HOME=/
 # run-parts
 01 * * * * root run-parts /etc/cron.hourly
 02 4 * * * root run-parts /etc/cron.daily
 12 4 * * 0 root run-parts /etc/cron.weekly
 22 4 1 * * root run-parts /etc/cron.monthly
 32 4 * * * root run-parts /etc/cron.rotate

Да го разгледаме вториот дел од податотеката. Секоја линија е сочинета од серија на повеќе полиња одделени со празно место.

Полињата се:

minute hour dom month dow user command

minute - Параметар кој ги контролира минутите во еден час. Вредноста е помеѓу 0 и 59;

hour - Контрола за часот во кој се извршува наредбата (24 часовен облик). Вредноста е помеѓу 0 и 23 (0 е полноќ);

dom - Ден во месецот. Вредноста е помеѓу 1 и 31;

month - Месец во годината. Вредноста е помеѓу 1 и 12 (претставено нумерички)или текстуално на англиски јазик со користење на првите три букви(Jan – Dec);

dow - Овој параметер означува ден во неделата. Вредноста е помеѓу 0 и 7. Денот недела се означува како 0 или 7 или текстуално на англиски јазик со користење на првите три букви од денот(Mon – Sun);

user - Името на корисникот со кое се извршува наредбата;

command - Ова е самата наредба којашто сакаме да ја извршиме. Ова поле може да содржи повеќе наредби според правилот за извршување на наредби внесени во една линија;

Доколку не сакате некоја од овие променливи полиња да ги специфицирате, во тој случај ставете ѕвезда ‘*’.

На пример:

 01 * * * * root echo ”Hello”

Испис на зборот “Hello” секој час во 01 минута.

 17 20 * * * root date

Приказ на системското време секој ден во 20:17.

 00 4 * * 0 root rm –fr /tmp/*

Оваа наредба (безусловно рекурзивно бришење на сите податотеки во /tmp/ директориумот) ќе биде извршена секоја недела во 4 часот наутро.

Кога двете полиња dom и dow се внесени, наредба се извршува кога било кој од двата услова е исполнет.

Пример:

 * 12 16 * 1 root /scripts/backup-make

Условите во полињата налагаат извршување на оваа наредба секој понеделник и секој 16-ти на пладне. Истиот резултат би го добиле ако се употребат следниве две наредби:

 * 12 16 * * root /scripts/backup-make
 * 12 * * 1 root /scripts/backup-make

Самите параметри во полињата може да бидат и листа од параметри одделени со запирака, или интервал со користење на цртичка.

Пример:

 59 11 * * 1,2,3,4,5 root /scripts/proverka.sh

Ќе се изврши во 11:59 секој понеделник, вторник и среда. Истото би го добиле и со:

 59 11 * * 1-5 root /scripts/proverka.sh

Cron исто така подржува и употреба на 'step' варијабли.

Вредноста */2 во dom полето, значи дека наредбата ќе се извршува секој втор ден, а */5 во полето за минути овозможува извршување на секои пет минути.

Пример:

 * 12 10-16/2 * * root backup.sh

е исто со:

 * 12 10,12,14,16 * * root backup.sh
 */15 9-17 * * * root reset-adsl.test

Секои 15 минути помеѓу 9 и 15 часот.

Коментари се дозволени во crontab, но тие мора да започнат со '#';

Other Languages
العربية: كرون (يونكس)
català: Cron (Unix)
čeština: Cron
dansk: Cron
Deutsch: Cron
English: Cron
español: Cron (Unix)
فارسی: کرون جاب
français: Cron
한국어: Cron
hrvatski: Cron
עברית: Cron
magyar: Cron
Nederlands: Cronjob
norsk: Cron
polski: Cron
română: Cron
русский: Cron
suomi: Cron
svenska: Cron
ไทย: ครอน
українська: Cron
中文: Cron