Crontab în Linux – cu exemple și instrumente în timp real

Să explorăm crontab, comenzile sale și diverse operațiuni asociate cu Crontab.

Vom învăța cum să programăm sarcini folosind utilitarul cron și, în final, vom discuta și despre unele dintre instrumentele online care ne ajută cu formatarea și testarea comenzilor cron.

Cuprins

Origine

Crontab înseamnă „cron table“. Cuvântul cron a fost luat din cuvântul grecesc Chronos care înseamnă timp. Crontab este un proces demon de sistem care va efectua automat unele sarcini și joburi conform orei programate.

  Cum să configurați și să utilizați clientul Fragments BitTorrent pe Linux

Cazuri de utilizare

Crontab este util pentru a efectua diverse operațiuni, cum ar fi gestionarea backup-ului automat, rotația fișierelor jurnal, sincronizarea fișierelor între mașini la distanță și ștergerea folderelor temporare etc. tip de lucru de administrare a sistemului.

Folosind cron, un administrator poate programa o lucrare să ruleze la o anumită oră și zi.

Deci, să vedem cum putem configura asta.

Sintaxa Crontab

Pentru a executa o listă de comenzi, utilitarul cron citește fișierele de configurare. Pentru a interpreta liniile din tabelele de configurare crontab, urmează o sintaxă Crontab. Crontab are șase câmpuri, iar primele cinci (1-5) câmpuri definesc data și ora execuției. Ultimul câmp, adică al șaselea câmp, ar putea fi un nume de utilizator și/sau sarcină /job/comandă/script care urmează să fie executat.

* * * * * COMANDA/SCRIPT-TO-EXECUTE NUME_UTILIZATOR

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_________ Ziua săptămânii (0 – 6) (0 este duminică sau folosește nume)
│ │ │ |____________ Luna (1 – 12),* înseamnă fiecare lună
│ │ |______________ Ziua lunii (1 – 31),* înseamnă fiecare zi
│ |________________ Ora (0 – 23),* înseamnă fiecare oră
|___________________ Minut (0 – 59), * înseamnă fiecare minut

Note:

  • Asterisc
  • este utilizat pentru potrivirea tuturor valorilor posibile pentru un câmp. De exemplu, un asterisc folosit în câmpul oră ar fi echivalent cu fiecare oră sau un asterisc în câmpul lună ar fi echivalent cu fiecare lună.

numele de utilizator este opțional (disponibil numai dacă este fișierul crontab de sistem)

Exemple:

Să înțelegem sintaxa de mai sus cu câteva exemple

0 5 * * * /scripts/job.sh

1. Programați un cron pentru a se executa zilnic la ora 5:00

0 6,18 * * * /scripts/job.sh

2. Programați un cron pentru a se executa de două ori pe zi la 6 AM și 6 PM

* * * * * /scripts/job.sh

3. Programați un cron pentru a se executa în fiecare minut

0 19 * * mon /scripts/job.sh

4. Programați un cron pentru a se executa în fiecare luni la ora 19.00.

*/10 * * * * /scripts/job.sh

5. Programați un cron pentru a se executa la fiecare 15 minute.

* * * feb,jun,oct * /script/job.sh

6. Programați un cron pentru a se executa în lunile selectate

25 7 4 3 * /home/script/backup.sh

7. Rulați scriptul shell /home/script/backup.sh pe 4 martie la 7:25 AM

8. Programați un cron pentru a se executa la fiecare 30 de secunde

  • Deoarece nu avem control asupra secundelor în Crontab, dar îl putem realiza prin procesul în doi pași de mai jos.
* * * * * /home/scripts/script.sh
  • Să programăm mai întâi o sarcină care rulează în fiecare minut.
* * * * * sleep 30; /home/scripts/script.sh

Acum să folosim comanda sleep pentru a întrerupe execuția timp de 30 de secunde.

Sarcina de mai sus va opri execuția timp de 30 de secunde și se va relua.

Tipul fișierelor de configurare Cron

  Cum să utilizați comanda de redenumire pe Linux

Există două tipuri de fișiere de configurare Cron:

Sistemul UNIX/Linux Crontab

Acest lucru necesită privilegii de rădăcină, deoarece de obicei este folosit pentru servicii de sistem și joburi critice. Al șaselea câmp (în descrierea de sintaxă de mai sus) este numele unui utilizator pentru ca comanda să ruleze. Oferă posibilitatea sistemului crontab de a rula comenzi ca orice utilizator.

Utilizatorul Crontab

Un utilizator își poate instala propriile joburi cron folosind comanda crontab. Și aici, al șaselea câmp (în descrierea de sintaxă de mai sus) este comanda de rulat, iar toate comenzile rulează ca utilizatorul care a creat crontab. Fiecare utilizator poate avea propriul său fișier crontab și, deși acestea sunt fișiere în /var/spool/cron/crontabs, nu sunt destinate să fie editate direct. Trebuie să folosim comanda crontab pentru editarea sau configurarea propriilor lucrări cron.

Cum functioneazã? Serviciul cron (daemon) rulează în fundal și verifică constant (în fiecare minut) fișierul /etc/crontab și directoarele /etc/cron.*/. De asemenea, verifică directorul /var/spool/cron/. Comenzile sunt executate de cron

când câmpurile minute, oră și lună se potrivesc cu ora curentă și cel puțin unul dintre câmpurile de două zile (ziua lunii sau ziua săptămânii) se potrivește cu ziua curentă.

Comenzi de bază

Listarea joburilor Cron existente

crontab -l

Putem enumera toate joburile Cron fără a deschide fișierul de configurare crontab folosind comanda de mai jos

[[email protected] ~]# crontab -l
no crontab for tipstrick.ro
[[email protected] ~]#

Dacă nu există nicio sarcină existentă, va returna rezultatul ca

[[email protected] ~]# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[[email protected] ~]#

Dacă utilizatorul a adăugat deja unele dintre lucrări, se va afișa după cum urmează.

Tabelul Cron este specific utilizatorului, ceea ce înseamnă că trebuie să fiți autentificat cu un anumit utilizator pentru a vedea lista tabelului Cron.

Listă Cron pentru un anumit utilizator

Pentru a lista joburile programate ale altui utilizator, utilizați opțiunea ca -u (Utilizator) și -l (Lista).

crontab -u alt_nume_utilizator -l

Exemplu: crontab -u tipstrick.ro -l

Adăugați/Modificați intrări Crontab

Pentru a edita intrarea crontab, putem folosi opțiunea -e așa cum se arată mai jos.

  Cum se instalează editorul de markdown Zettlr pe Linux

crontab -e

Comanda de mai sus va deschide editorele vi unde specificați detaliile jobului și salvați fișierul. Odată salvat, puteți verifica dacă cron este configurat sau nu cu crontab -l.

Adăugați/Modificați intrări Crontab pentru un anumit utilizator

crontab -u another_username -e

Putem edita crontab pentru alt utilizator folosind comanda de mai jos

Exemplu: crontab -u tipstrick.ro -e

Eliminați intrarea Crontab

Utilizați parametrul -r cu Crontab pentru a elimina sarcinile programate complete fără confirmare din crontab

crontab -r

crontab -i -r
[[email protected] ~]# crontab -i -r
crontab: really delete tipstrick.ro's crontab?

Dacă doriți confirmare înainte de a șterge joburile programate, utilizați opțiunea -i cu -r, care va solicita confirmarea utilizatorului înainte de a șterge crontab-ul utilizatorului.

șir special Crontab

În afară de sintaxa de mai sus pe care am discutat-o, putem folosi și opt șiruri speciale furnizate de Crontab. Nu numai că ne va economisi timp, dar va îmbunătăți și lizibilitatea.
șir special
Descriere
@reboot
Rulați o dată, după pornire.
@anual
Alergați o dată pe an, adică 0 0 1 1 *
@anual
La fel ca @anual
@lunar
Rulați o dată pe lună, adică 0 0 1 * *
@săptămânal
Rulați o dată pe săptămână, adică 0 0 * * 0
@zilnic
Alergați o dată pe zi, adică 0 0 * * *
@miezul nopţii
La fel ca @daily
@la oră

Alergați o dată pe oră, adică 0 * * * *

Exemple de șiruri speciale Crontab

1. Crontab pentru a programa sarcini pe o bază anuală

@anual /scripts/greeting.sh

Putem executa mai sus de unul pentru a trimite o felicitare de Anul Nou, Se va executa în primul minut al fiecărui an.

2. Crontab pentru a programa sarcini de executat lunar.

@monthly /scripts/cleanup.sh

Putem executa pe cel de mai sus pentru a efectua niște activități de curățare la începutul fiecărei luni.

În mod similar, putem folosi alte șiruri speciale Crontab pentru scopuri săptămânale, zilnice și orare.

Directorul Cron

  • Administratorul de sistem poate folosi un program cron la nivelul întregului sistem care se află sub directorul cron predefinit, așa cum se arată mai jos
  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.lunar

/etc/cron.săptămânal

Exemple Crontab în timp real

Să discutăm câteva dintre exemplele în timp real, pe care le folosesc de obicei un administrator de sistem sau profesioniștii IT.

Ștergeți fișierele și directorul goale

45 0 * * * tipstrick.ro find /tmp -type f -empty -delete

Deasupra expresiei cron va găsi fișierele goale și directorul din directorul /tmp și le va șterge. Acest job va rula zilnic la ora 12.45. Trebuie să menționăm numele de utilizator pentru a efectua această lucrare. În exemplul de mai sus, utilizatorul tipstrick.ro efectuează operația cron job.

Executați mai multe sarcini folosind un singur cron

* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh

Mai multe sarcini/lucrări pot fi separate folosind punct și virgulă (;) și pot fi atribuite unei singure expresii cron.

Instrumente de formatare și testare Cron

Până acum am discutat despre comenzile și sintaxa crontab pentru a programa o sarcină. Dar dacă nu sunteți administrator de sistem și sarcina dvs. este să nu configurați Cron în mod regulat, este posibil să nu vă amintiți sintaxa și deschide spațiu pentru erori. Nu vă faceți griji, avem o soluție la această problemă.

Există mai multe instrumente de formatare Cron disponibile online.

# 1. Cron Job Generator Cron Job Generator

este o interfață grafică foarte ușor de utilizat, unde puteți specifica minutul, zilele și calea scriptului pentru a genera crontab.

Să luăm un exemplu în timp real în care trebuie să execut /home/processMonitor.sh la fiecare 5 minute de luni până vineri.

Deci, am obținut sintaxa Cron de mai jos pe care o pot pune în crontab-ul meu executând
crontab –e

0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. Easycron Easycron

este un programator de job cron util bazat pe web. Putem crea un job cron specificând o adresă URL de apelat, putem seta ora la care ar trebui să fie executată. De asemenea, putem specifica o expresie cron sau o putem adăuga manual dintr-un formular descriptiv. Important este că opțional putem folosi autentificarea HTTP de bază pentru un nivel mic de securitate.

Nu numai asta, dar Easycron poate fi folosit și pentru a atinge alte scopuri, cum ar fi expresia Cron standard, jurnalele de execuție a lucrărilor Cron, notificarea prin e-mail, jurnalele separate de eșec etc.

# 3. Crontab Generator Generator Crontab

este un alt instrument la îndemână pentru a genera crontab și, cu acest instrument, puteți adăuga, de asemenea, dacă doriți să salvați rezultatul cron în fișier sau să îl trimiteți pe e-mail.

# 4. Crontab Guru Crontab Guru

este un simplu editor online de expresii cron program. În plus, oferă un mijloc util de monitorizare a cronjob-ului. Tot ce trebuie să facem este să copiem o comandă furnizată și să o anexăm la sfârșitul definiției crontab. În cazul în care lucrarea cron eșuează sau nici măcar nu pornește, veți primi un e-mail de alertă.

În exemplul de mai jos, Job se va executa la 04:05, în fiecare zi, în fiecare lună și în fiecare săptămână.

# 5. Tester CRON Tester CRON

ne permite să testăm definițiile cron time/date. Ar putea exista o situație în care trebuie să decodificăm sintaxa cron existentă pentru depanare sau să vrem doar să facem un test.

Pentru a face acest lucru, putem folosi acest instrument. Tot ce trebuie să facem este să copiam și să lipim expresia noastră cron în câmpul de definiție cron, apoi alegem numărul de iterații și facem clic pe Test pentru a vedea diferitele date la care va rula.

Să verificăm una dintre expresiile noastre cron 4 3 */2 * *care ar trebui să ruleze la 03:04(AM) la fiecare două zile. Să verificăm cu cron tester.

Concluzie Sper că cele de mai sus vă vor ajuta să înțelegeți mai bine Crontab și să configurați joburi cron. Programarea joburilor prin Cron este una dintre numeroasele sarcini efectuate de Linux Admin. Dacă sunteți interesat să învățați abilitățile avansate, verificați acest lucrucurs

.