Despre Linux

  • Facebook
  • Twitter
  • LinkedIn
  • Acasă
  • Linux
    • Comenzi Linux
    • Tutoriale
  • Kubernetes
  • 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ă

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 într-o fereastră nouă)
  • Dă clic pentru a partaja pe LinkedIn(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe Twitter(Se deschide într-o 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 site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Copyright © 2023 · Bobses

Administrează consimțămintele pentru cookie-uri
Pentru a oferi cea mai bună experiență, folosim tehnologii, cum ar fi cookie-uri, pentru a stoca și/sau accesa informațiile despre dispozitive. Consimțământul pentru aceste tehnologii ne permite să procesăm date, cum ar fi comportamentul de navigare sau ID-uri unice pe acest site. Dacă nu îți dai consimțământul sau îți retragi consimțământul dat poate avea afecte negative asupra unor anumite funcționalități și funcții.
Funcționale Mereu activ
Stocarea tehnică sau accesul sunt strict necesare în scopul legitim de a permite utilizarea unui anumit serviciu cerut în mod explicit de către un abonat sau un utilizator sau în scopul exclusiv de a executa transmiterea unei comunicări printr-o rețea de comunicații electronice.
Preferințe
Stocarea tehnică sau accesul este necesară în scop legitim pentru stocarea preferințelor care nu sunt cerute de abonat sau utilizator.
Statistici
Stocarea tehnică sau accesul care sunt utilizate exclusiv în scopuri statistice. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
Stocarea tehnică sau accesul sunt necesare pentru a crea profiluri de utilizator pentru a trimite publicitate sau pentru a urmări utilizatorul pe un site web sau pe mai multe site-uri web în scopuri de marketing similare.
Administrează opțiunile Administrează serviciile Administrează vânzătorii Citește mai multe despre aceste scopuri
Vizualizează preferințele
{title} {title} {title}