În UNIX, cron este un job scheduler care permite executarea unor acțiuni la un moment dat în timp. Acțiunile sunt definite în general prin scripturi, și sunt rulate de cron la intervale regulate. Este folosit în principal pentru a administrarea sistemului, însă poate fi folosit și pentru activități generale precum conectarea la Internet sau descărcarea emailurilor.[1]

Configurare

modificare

Fișierul principal de configurare cron este /etc/crontab. Acesta conține comenzile shell care sunt rulate periodic. Fiecare linie din fișierul crontab este o expresie cron urmată de comanda shell care trebuie executată.

Formatul liniei crontab este următorul:

.---------------- minut (0 - 59) |   .------------- oră (0 - 23)|   |   .---------- ziua lunii (1 - 31)|   |   |   .------- luna (1 - 12) sau jan,feb,mar,apr ... |   |   |   |  .----- ziua săptămânii (0 - 6) (Sunday=0) sau sun,mon,tue,wed,thu,fri,sat |   |   |   |  |*   *   *   *  *  comanda care trebuie executată

Stabilirea permisiunilor de acces la sistemul cron se face prin intermediul fișierelor /etc/cron.allow și/sau /etc/cron.deny. Aceste fișiere listează utilizatorii pentru care cron rulează sau nu scripturi din crontab. În lipsa acestor fișiere numai utilizatorul root are acces la cron.

Expresii predefinite

modificare
ValoareDescriereEchivalent
@yearly (sau @annually)Execută o dată pe an, la miezul nopții de 1 ianuarie0 0 1 1 *
@monthlyExecută o dată pe lună, la miezul nopții fiecărei date de 1 a lunii0 0 1 * *
@weeklyExecută o dată pe săptămână, la miezul nopții, în ziua de duminică0 0 * * 0
@dailyExecută zilnic la miezul nopții0 0 * * *
@hourlyExecută o dată pe oră, la începutul fiecărei ore0 * * * *
@rebootExecută la pornire@reboot

Linia de configurare crontab folosită pentru a curăța logul unui server Apache arată în felul următor:

1 0 * * *  echo -n "" > /www/apache/logs/error_log

Scriptul este rulat în fiecare zi, la un minut după miezul nopții.

Exemplu de linie de configurare crontab care rulează un script Perl din cinci în cinci minute:

*/5 * * * *  /home/user/test.pl


Expresii cron

modificare

O expresie cron este un string de 6 sau 7 câmpuri separate prin spațiu[2] care descriu momentele în timp când o acțiune cron este executată.

Numele câmpuluiObligatoriu?Valori permiseCaractere speciale permise
MinuteDa0-59* / , -
OreDa0-23* / , -
Ziua luniiDa1-31* / , - ? L W C
LunaDa1-12 sau JAN-DEC* / , -
Ziua săptămâniiDa0-6 sau SUN-SAT* / , - ? L C #
AnulNu1970–2099* / , -

Unele implementări cron, precum cea din BSD scrisă de Paul Vixie, cuprind un câmp suplimentar care conține contul utilizatorului pentru care se execută jobul.

Caractere speciale

modificare
* - orice valoare este permisă, de exemplu un * în câmpul 5 va indica orice lună
/ - increment, de exemplu 0/15 în primul câmp va indica intervale de 15 minute începând cu minutul 0
, - separator de elemente de listă, de exemplu MON,WED,FRI în câmpul șase
- - intervale, de exemplu 2000-2010
? - valoarea este omisă
L (last) – este folosit pentru a marca ultima apariție posibilă, de exemplu ultima vineri din lună
W (weekday) – acțiunea se petrece în una din zilele luni-vineri
# - urmat de un număr, marchează o apariție specifică, de exemplu a doua vineri din lună

Fiecare minut:

* * * * *

23:00:00 în orice zi lucrătoare a săptămânii:

0 23 * * MON-FRI

În anul 2014, în fiecare 11 și 26 a lunii, din ianuarie până în iunie la orele 1, 9 și 22:

0 1,9,22 11,26 1-6 * 2014

Versiuni cron

modificare

Prima implementare cron a fost făcută de Brian Kernighan și introdusă în Unix Versiunea 7în anul 1979.

Noi implementări cron au apărut în decursul timpului printre care și Vixie cron scrisă de Paul Vixie în anul 1987. Versiunea 3 Vixie cron a apărut în anul 1993 și este versiunea cea mai des folosită pe sistemele BSD și Linux. Versiunea 4.1 Vixie cron a apărut în ianuarie 2004 și fost redenumită ISC Cron.

Alte implementări cron mai des folosite sunt anacron (un fork Vixie cron al lui RedHat), fcron (încearcă să înlocuiască anacron și Vixie cron) și mcron (versiunea GNU compatibilă cu Vixie cron).


Referințe

modificare


Vezi și

modificare


Legături externe

modificare
 v  d  m  Programe în linia de comandă pentru Unix (mai multe)
Management de fișiere:cat | cd | chmod | chown | chgrp | cksum | cmp | cp | du | df | file | fsck | ln | ls | lsof | mkdir | mount | mv | pwd | rm | rmdir | split | touch
Management de procese:at | chroot | cron | exit | kill | killall | nice | pgrep | pidof | pkill | ps | pstree | sleep | time | top | wait
Management utilizator/mediu:env | finger | id | mesg | passwd | su | sudo | uname | uptime | w | wall | who | whoami | write
Procesare text:awk | comm | cut | ed | ex | fmt | head | iconv | join | less | more | paste | sed | sort | tac | tail | tr | uniq | wc | xargs
Programare Shell:basename | echo | expr | false | printf | test | true | unsetImprimare:
lp
Communicații:
inetd | netstat | ping | rlogin | traceroute
Căutare:
find | grep | strings
Diverse:
banner | bc | cal | dd | man | size | yes