cron

Î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]

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 | modificare sursă]
Valoare Descriere Echivalent
@yearly (sau @annually) Execută o dată pe an, la miezul nopții de 1 ianuarie 0 0 1 1 *
@monthly Execută o dată pe lună, la miezul nopții fiecărei date de 1 a lunii 0 0 1 * *
@weekly Execută o dată pe săptămână, la miezul nopții, în ziua de duminică 0 0 * * 0
@daily Execută zilnic la miezul nopții 0 0 * * *
@hourly Execută o dată pe oră, la începutul fiecărei ore 0 * * * *
@reboot Execută 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 | modificare sursă]

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âmpului Obligatoriu? Valori permise Caractere speciale permise
Minute Da 0-59 * / , -
Ore Da 0-23 * / , -
Ziua lunii Da 1-31 * / , - ? L W C
Luna Da 1-12 sau JAN-DEC * / , -
Ziua săptămânii Da 0-6 sau SUN-SAT * / , - ? L C #
Anul Nu 1970–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 | modificare sursă]
* - 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 | modificare sursă]

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).




Legături externe

[modificare | modificare sursă]
 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 | unset Imprimare:
lp
Communicații:
inetd | netstat | ping | rlogin | traceroute
Căutare:
find | grep | strings
Diverse:
banner | bc | cal | dd | man | size | yes