Despre Linux

  • Acasă
  • Linux
    • Comenzi Linux
    • Tutoriale
  • RHCSA
    • Exerciții RHCSA
    • SELinux
    • Permisiuni
  • General
    • Open source
  • Contact

Cum se adaugă sarcini CRON în Linux

5 noiembrie 2016 By Bobses 6 comentarii

De mai multe ori în tutorialele prezentate pe site am menționat adăugarea unor sarcini cron, fără să ofer prea multe explicații. Dar cum zilele acestea am fost întrebat ce anume reprezintă simbolurile din linia CRON, a venit rândul și unui astfel de articol.

Cron permite utilizatorilor Linux să execute comenzi sau scripturi la anumite momente bine stabilite. Cron este una din cele mai folositoare unelte din Linux. Este folosită, de regulă, de administratorii de sistem pentru backup (am explicat în acest articol cum se face backup automat la un server VPS), pentru curățarea directorului /tmp sau pentru orice alt script considerat util de sysadmin.

Serviciul (daemonul) cron rulează în background și verifică în permanență directoarele /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly și /etc/cron.weekly pentru a găsi scripturile adăugate acolo (semnificația fiecărui director este de la sine înțeleasă).

Comanda crontab

Vom folosi comanda crontab pentru a edita lista sarcinilor impuse a fi executate. Pentru a deschide crontab-ul personal (fișierul de configurare cron), se va executa comanda:

crontab -e

În fiecare linie din acest fișier putem defini ce comandă sau script să se execute, la ce interval de timp (din 5 în 5 minute, de 2 ori pe lună, etc.). Structura unei linii este următoarea:

minute oră zi-din-lună lună zi-din-săptămână cale/către/comandă

crontab-rhel

Fișierul /etc/crontab în RHEL

 

Unde:

  • minute: 0 - 59
  • ora: 0 - 23
  • ziua-din-lună: 0 - 31
  • luna: 1 - 12 (12 == decembrie), sau jan, feb, mar,...
  • ziua-din-săptămână: 0 - 6 (0 == duminică), sau sun, mon, tue, wed, thu, fri, sat
  • cale/către/comandă: calea către scriptul sau comanda care trebuie să se execute

Fișierul cron al utilizatorilor arată la fel ca cel de sistem (prezentat mai sus, cu deosebirea că linia cron va avea sintaxa:

minute oră zi-din-lună lună zi-din-săptămână NUME_UTILIZATOR cale/către/comandă

Câteva exemple de sarcini cron:

Linia de mai jos execută scriptul backup.sh în fiecare zi a săptămânii la ora 2 dimineața:

0 2 * * * /root/backup.sh

Linia următoare execută o anumită comandă în fiecare zi a săptămânii la 5 minute după miezul nopții:

5 0 * * *cale/către/comandă

Linia următoare se execută în prima zi a fiecărei luni la ora 14:15:

15 14 1 * * cale/către/comandă

Linia de mai jos se execută la ora 22:00 în fiecare zi de luni până vineri

0 22 * * 1-5 cale/către/comandă

Linia următoare se execută în fiecare zi din două în două ore, începând cu ora 0:23, continuând cu 02:23, 04:23, etc.

23 0-23/2 * * * cale/către/comandă

Cum se folosesc operatorii

Un operator permite specificarea a mai multor valori într-un singur câmp. Pentru cron există 4 operatori:

  1. asteriscul (*): specifică toate valorile posibile pentru un câmp; de exemplu, un * în câmpul oră înseamnă că linia respectivă va fi executată în fiecare oră, un * în câmpul zi a lunii semnifică execuția în fiecare zi;
  2. virgula (,): acest operator specifică o listă de valori; de exemplu, dacă avem în câmpul zi a lunii 1,5,9,17,23,28, linia respectivă se va executa doar în zilele specificate din fiecare lună;
  3. liniuța (-): acest operator specifică un interval de valori; de exemplu, putem scrie 1-5 în loc de 1,2,3,4,5
  4. separatorul slash (/): specifică pasul valorilor respective; de exemplu, cum am avut mai sus 0-23/2, semnifică faptul că linia se va executa din 2 în două ore; tot la fiecare două ore mai poate fi specificat prin */2; la fiecare 20 de minute putem specifica dacă trecem în câmpul minute */20

Pentru a lista toate sarcinile cron:

crontab -l
crontab -u username -l

Pentru a șterge toate sarcinile cron folosim comanda:

# Șterge toate sarcinile cron
crontab -r

# Șterge toate sarcinile cron ale unui utilizator
crontab -r -u username

Folosirea șirurilor speciale

În loc să folosim primele 5 câmpuri (minute, oră, zi-din-lună, lună, zi-din-săptămână), putem să definim sarcini cron folosind unul din următoarele 8 șiruri speciale:

Șir specialSemnificație
@rebootrulează o singură dată, la pornirea serverului
@yearlyrulează o dată pe an; echivalent cu "0 0 1 1 *"
@annuallyla fel cu @yearly
@monthlyrulează o dată pe lună; echivalent cu "0 0 1 * *"
@weeklyrulează o dată pe săptămână; echivalent cu "0 0 * * 0"
@dailyrulează o dată pe zi; echivalent cu "0 0 * * *"
@midnightla fel ca @daily
@hourlyrulează la fiecare oră; echivalent cu "0 * * * * "

Directoarele cron

DirectorDescriere
/etc/cron.d/Puneți scripturile aici și le chemați prin intermediul crontab
/etc/cron.hourly/Rulează toate scripturile de aici o dată pe oră
/etc/cron.daily/Rulează toate scripturile de aici o dată pe zi
/etc/cron.weekly/Rulează toate scripturile de aici o dată pe săptămână
/etc/cron/monthly/Rulează toate scripturile de aici o dată pe lună

Pentru a intra mai amănunțit în detaliile cron folosiți comanda man 5 crontab.

Partajează asta:

  • Dă clic pentru a partaja pe Facebook(Se deschide în fereastră nouă)
  • Dă clic pentru a partaja pe LinkedIn(Se deschide în fereastră nouă)
  • Dă clic pentru a partaja pe Twitter(Se deschide în fereastră nouă)

Similare

Din categoria: Tutoriale Etichete: cron, cron job, linux, sarcini cron, server virtual privat, VPS

Comentarii

  1. Teec a zis

    5 noiembrie 2016 la ora 20:03

    Foarte bun articolul , foarte bine explicat!

    Răspunde
    • Bobses a zis

      5 noiembrie 2016 la ora 20:05

      Mersi!

      Răspunde
  2. Petru a zis

    5 noiembrie 2016 la ora 19:17

    Salutare,

    Multumesc pentru prezentarea acestui instrument.

    Mi se pare foarte util. 🙂

    Numai bine,

    Petru

    http://www.gulian.ro

    Răspunde
    • Bobses a zis

      5 noiembrie 2016 la ora 19:49

      Salut
      Cu plăcere.
      Toate cele bune.

      Răspunde

Trackbacks

  1. Monitorizare grafică în timp real a unui server Linux | Lumea lui Bobses spune:
    18 februarie 2017 la 18:36

    […] se face fie descărcând versiunea nouă din GitHub și recompilând-o, fie prin adăugarea unei sarcini cron (mai puțin în Arch Linux și Gentoo, unde actuzalizările vor veni prin intermediului […]

    Răspunde
  2. Cum se pot șterge fișiere mai vechi de x zile în Linux | Lumea lui Bobses spune:
    29 noiembrie 2016 la 7:16

    […] comenzi se pot pune și separat într-o sarcină cron și funcționează în orice distribuție […]

    Răspunde

Lasă un răspuns Anulează răspunsul

Acest sit folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Copyright © 2021 · Bobses