Cum se utilizează Cron și Crontab pe Linux pentru a programa sarcini pe servere

Utilizați Cron și Crontab pe Linux pentru a programa sarcini pe servere

Ați încercat vreodată să programați o sarcină repetitivă pe serverul dvs. Linux și nu ați știut cum să o faceți? Instrumentele cron și crontab disponibile în mod implicit în sistemele Linux vă vor permite să efectuați o anumită sarcină (sau mai multe) într-un anumit timp, și anume că vom putea programa cu o exactitate de minute ceea ce vrem să executăm și când vrem. alerga. Astăzi vom explica în detaliu cum funcționează atât Cron, cât și Crontab, astfel încât să vă puteți gestiona corect serverele.

Aceste două elemente sunt foarte importante atunci când vine vorba de planificarea sarcinilor periodice care sunt executate fără ca noi să fim conștienți de starea lor. Ne va permite să nu ne facem griji cu privire la executarea unui anumit moment, lăsându-l complet automat în sistemul de operare. Am menționat anterior Cron și Crontab. În primul rând, vom vedea ce diferențe există între ambele elemente. Mai târziu vom învăța să adăugăm sarcini și, în cele din urmă, vom aprofunda în gestionarea locurilor de muncă Cron.

Diferențe între Cron și Crontab

Deși poate părea că vorbim despre același lucru, nu este cazul și două elemente ar putea fi considerate dependente unul de celălalt. Pentru a fi mai clari, ei sunt responsabili de a face posibilă programarea sarcinilor pe sistemele Linux. În prezent, orice sistem de operare bazat pe Linux are ambele instrumente, pentru a programa diferite sarcini în mod repetat, fără ca noi să avem grijă de el.

Ce este Cron

Cron este un daemon (proces de fundal) care rulează din momentul pornirii sistemului de operare. Cron va fi însărcinat cu verificarea dacă există o sarcină (job) de executat, în funcție de timpul configurat în sistemul de operare în sine. Este foarte important ca ora să fie configurată corect și, de asemenea, fusul orar, în caz contrar, execuțiile făcute de Cron nu vor corespunde setărilor noastre.

Pentru a ne asigura că sistemul nostru de operare este configurat corect, este foarte important să obțineți automat timpul de pe serverele NTP (Network Time Protocol) existente. Pentru a verifica dacă avem ora corectă în sistemul nostru de operare, în ce fus orar ne aflăm și dacă ceasul sistemului este sincronizat corect cu serverele NTP, putem executa următoarea comandă:

timedatectlAr trebui să vedem ceva de genul:

După cum puteți vedea, toate orele se potrivesc perfect și ora este corectă, acest lucru este foarte important, în caz contrar, „Crons” vor fi executate în ore în care nu ar trebui executate. În cazul în care fusul orar nu este configurat corect, îl putem configura corect cu următoarea comandă:

timedatectl set-timezone Europe/MadridOdată cu instalarea sistemului de operare Linux, serverele NTP pe care le dorim sunt configurate automat, în caz de eșec sau că dorim să schimbăm aceste servere NTP, putem face acest lucru instalând serviciul corespunzător și configurându-l în / etc / ntp .conf.

În funcție de distribuție, Cron începe să utilizeze /etc/rc.d/ or /etc/init.d dosare și în fiecare minut verifică / etc / crontab or  / var / bobină / cron fișiere pentru posibile execuții pe care le putem avea. programat.

Ce este Crontab

Crontab este un fișier text, este un fișier cu conținut special și special conceput pentru a fi citit corect de Cron și pentru a continua cu execuția pe care am programat-o. Crontab are o listă cu toate scripturile de executat, în general fiecare utilizator al sistemului are propriul fișier Crontab, în ​​acest fel, fiecare utilizator își poate programa propriile sarcini repetitive în mod independent, fără a fi nevoie ca noi să mergem întotdeauna la utilizator administrator. În acest fel, orice utilizator (inclusiv administratorii) poate programa sarcini repetitive pentru a efectua diferite execuții.

Pentru a-și genera propriul fișier, fiecare utilizator trebuie să utilizeze comanda „crontab” (da, este același nume).

Adăugați sarcini la Crontab

Pornind de la faptul că putem executa sarcini, în primul rând vom configura un script foarte simplu pe care îl vom numi query.sh, vom pune acest script pe „Desktop” sau în „Documente”, vom fi capabil să execute direct editorul de text «nano» în locația în care dorim să îl punem:

nano consulta.shConținutul scriptului ar fi următorul:

#!/bin/bashsudo ls -l / > archivoResultado.txt

Odată ce am programat scriptul, care este practic un program care listează fișierele și directoarele din directorul curent și îl exportă într-un fișier text, trebuie să-i acordăm permisiuni de execuție pentru a-l putea executa corect de Cron, altfel va fi nu au permisiuni de executare:

chmod ugo+x consulta.shAcest aspect este foarte important, deoarece altfel comanda nu va fi executată niciodată.

A sosit momentul să editați fișierul care are sarcinile. Pentru aceasta vom folosi comanda crontab -e. Găsim următoarea structură:

linux-cron-crontab-adăugați-sarcini-periodice

5 asteriscuri și comanda de executat. Fiecare dintre cele 5 asteriscuri înseamnă:

  • m: minut
  • h: ora
  • soare: ziua săptămânii
  • lun: lună
  • dow: ziua lunii

Valorile pe care fiecare dintre aceste variabile le poate adopta sunt în imagine. De exemplu, în cazul acestuia din urmă, este permisă utilizarea denumirii zilelor scrise în limba engleză. Deși nu apare în imaginea anterioară, este necesar să indicați între comandă și ultimul asterisc (ziua) proprietarul fișierului.

Pentru a fi clar, vom folosi câteva exemple:

Dacă vrem să executăm interogarea script.sh în fiecare zi la 7 după-amiaza, va trebui să indicăm o linie în crontab cu următoarele:

00 19 * * * usuario /ubicacion/del/script/consulta.shDacă vrem să alergăm în fiecare duminică la 7 după-amiaza:

00 19 * * 0 usuario /ubicacion/del/script/consulta.shRulați scenariul în fiecare 4 februarie la ora 7:XNUMX:

00 19 4 2 * usuario /ubicacion/del/script/consulta.shTrebuie spus că în Linux există câteva șiruri de text rezervate pentru a executa procese în anumite perioade în Crontab în sine, acest lucru va fi foarte util:

  • @ reboot: Executați o dată și imediat ce computerul pornește.
  • @anual: rulează o singură dată pe an: 0 0 1 1 *
  • @ lunar: rulează o dată pe lună și în prima zi: 0 0 1 * *
  • @saptamanal: in fiecare saptamana, primul minut din prima ora a saptamanii: 0 0 * * 0.
  • @ zilnic: în fiecare zi la 12 noaptea: 0 0 * * *
  • @midnight: Are același efect ca mai sus.
  • @hourly: toate orele din primul minut: 0 * * * *

Deși v-am spus care ar fi formatul, atunci când utilizați crontab -e acești termeni pot fi folosiți pentru a defini perioada.

Administrarea locurilor de muncă Cron

Funcționarea Crontab este foarte simplă, așa cum am văzut, acum vă vom învăța câteva comenzi de bază pentru a controla funcționarea Crontab în sine în sistemele de operare Linux.

Pentru a înlocui fișierul existent cu altul definit de utilizator, trebuie utilizată următoarea comandă:

crontab archivoPentru a edita fișierul existent, se utilizează comanda pe care am văzut-o deja în acest articol:

crontab -eEnumerați toate sarcinile existente în crontab-ul utilizatorului:

crontab -lȘtergeți crontab-ul configurat:

crontab -dDefiniți directorul în care va fi stocat fișierul crontab. Pentru a efectua această operațiune, trebuie să aveți permisiuni de execuție în directorul menționat:

crontab -c dirInstrucțiuni pentru gestionarea crontab-ului altor utilizatori existenți din sistem:

crontab -u usuarioDupă cum puteți vedea, programarea executării sarcinilor nu este complicată și se poate face rapid dacă tot ce este menționat în acest tutorial este clar.