cron este un daemon clasic ( program de calculator pe sisteme de clasă UNIX ) folosit pentru a rula joburi periodic la un moment specific. Acțiunile regulate sunt descrise de instrucțiuni plasate în fișierele crontab și directoare speciale.
Numele cron este derivat din cuvântul grecesc χρόνος (hrόnos) - timp (în engleză - chronos ). Dezvoltatorul cron , Ken Thompson , a confirmat acest lucru într -o conversație privată cu Brian Kernighan . .
Pe sistemele bazate pe systemd , cron a fost de fapt înlocuit de mecanismul systemd.timer încorporat.
Fișierele Crontab create pentru utilizatori individuali se află în directorul [1] /usr/spool/cron/crontabs/ sau /var/spool/cron/tabs/ . Nu este recomandat să le editați manual; pentru aceasta se folosește comanda crontab -e. Fișierele crontab utilizate pentru a gestiona întregul sistem se află în directorul /etc/cron.d/ . În plus, directoarele /etc/cron.daily/ , /etc/cron.weekly/ și /etc/cron.monthly/ conțin programe care rulează automat (zilnic, săptămânal sau lunar).
Fișierul principal de configurare cron, /etc/crontab, arată cam așa:
# /etc/crontab: crontab la nivel de sistem # Spre deosebire de orice alt crontab, nu trebuie să rulați comanda `crontab' # pentru a instala noua versiune când editați acest fișier # și fișierele din /etc/cron.d. Aceste fișiere au, de asemenea, câmpuri de nume de utilizator, # lucru pe care niciunul dintre celelalte crontabs nu o fac. SHELL = /bin/sh PATH = /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # mh dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #Fiecare utilizator al sistemului are propriul fișier setat de crontab , care descrie la ce oră și ce programe să ruleze în numele acestui utilizator. Pentru a edita fișierul crontab , se folosește un program special crontab cu același nume , care vă permite să nu întrerupeți procesul cron în timpul editării.
Afișați conținutul fișierului de programare curent:
crontab -lȘtergerea fișierului de program curent:
crontab -rPentru a edita fișierul crontab al utilizatorului , utilizați comanda [2]
crontab -eTabelul crontab este format din 6 coloane separate prin spații sau file . Primele cinci coloane stabilesc timpul de execuție ( minut , oră , zi , lună , ziua săptămânii ), ele pot conține un număr, o listă de numere separate prin virgule, un interval de numere separate printr-o cratimă, simboluri *sau /. În fișierele crontab de sistem , după câmpurile de timp, este indicat utilizatorul de la care este executată comanda. Toate celelalte caractere din șir sunt interpretate ca o comandă executabilă cu parametrii săi. Dacă comanda trimite un text la ieșirea standard, acel text este trimis la e-mailul utilizatorului .
* * * * * comanda de executat - - - - - | | | | | | | | | ----- ziua săptămânii (0-7) (duminica = 0 sau 7) | | | ------- luna (1-12) | | --------- ziua lunii (1-31) | ----------- oră (0-23) ------------- minut (0-59)Un exemplu de fișier crontab :
# comentariile încep cu „#” ca de obicei # utilizați /bin/sh ca shell SHELL = /bin/sh # trimiteți rezultatele la această adresă MAILTO = [email protected] # adăugați directorul de acasă al utilizatorului la PATH PATH = /bin:/ usr/bin:/home/paul/bin #### Lucrările încep aici # se execută în fiecare zi la 0 ore 5 minute, adăugați rezultatul la log/daily 5 0 * * * $HOME /bin/daily.job >> $HOME /log/daily 2 > & 1 # executați 1 a fiecărei luni la 2:15 pm 15 14 1 * * $HOME /bin/monthly # în fiecare zi a săptămânii la 10:00 pm 0 22 * * 1 -5 echo „E timpul să pleci acasă” | mail -s "Este deja 22:00" john 23 */2 * * * echo „Rulează la 0:23, 2:23, 4:23 etc.” 5 4 * * sun echo „Alerg la 4:05 am duminică” 0 0 1 1 * echo „La mulți ani!” 15 10 .13 * * 1 .4 echo "Acest mesaj este afișat luni și joi la 10:15 și 13:15" 0 -59 * * * * echo "Run every minute" 0 -59/2 * * * * echo " Se execută pe minute pare" 1 -59/2 * * * * echo "Se rulează pe minute impare" # la fiecare 5 minute */5 * * * * echo "Au trecut cinci minute" # în fiecare prima duminică a fiecărei luni. -eq 7 este codul zilei săptămânii, adică 1 -> luni , 2 -> marți etc. 0 1 1 -7 * * [ " $( data '+\%u' ) " -eq 7 ] && echo " Această etichetă este afișată în fiecare prima duminică a fiecărei luni, la ora 1:00."Pentru confortul utilizatorilor, multe sisteme au programe GUI speciale pentru gestionarea cron .
Pentru distribuțiile bazate pe Debian:
Kcron este o interfață KDE pentru editarea fișierelor de configurare cron . Utilitarul este lansat prin Alt+F2 , în fereastra de editare puteți specifica cu mouse-ul:
Comenzi Unix | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
|