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]
Configurare
[modificare | modificare sursă]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 |
Exemple
[modificare | modificare sursă]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ă.
Format
[modificare | modificare sursă]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ă
Exemple
[modificare | modificare sursă]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).
Referințe
[modificare | modificare sursă]- ^ Newbie Introduction to cron
- ^ http://wiki.pentaho.com/display/ServerDoc1x/05.+CRON+Expressions+in+Detail?showComments=false Arhivat în , la Wayback Machine. 05. CRON Expressions in Detail - Pentaho Wiki
Vezi și
[modificare | modificare sursă]
Legături externe
[modificare | modificare sursă]- en Pagina de manual cron
- en Pagina de manual crontab
- en crontab, Commands & Utilities Reference, The Single UNIX® Specification, Issue 7 from The Open Group
- en GNU cron (mcron)
- en ISC Cron 4.1
- en Fedorahosted.org - a fork of vixie-cron 4.1 and anacron 2.3 from the RedHat project
- en UNIX / Linux cron tutorial[nefuncțională] - a quick tutorial for UNIX like operating systems with sample shell scripts.
- en All about Cron on one page - a page covering Cron, starting with theory and ending with many practical examples about its usage.
- ro Cron – Planificarea execuției comenzilor Arhivat în , la Wayback Machine.
- ro Rularea programată a aplicațiilor cu cron Arhivat în , la Wayback Machine.
linia de comandă pentru Unix (mai multe) | Programe în|||
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 |