Acest articol va explica sarcinile de planificare și rularea scripturilor la intervale regulate utilizând joburi cron.
Ce este Cron?
Cron este un program de programare a sarcinilor care rulează în fundal ca proces. Poate fi folosit pentru a rula periodic anumite lucrări care sunt programate folosind setul său de reguli predefinite. Cron vine preinstalat pe majoritatea distribuțiilor Linux sau este disponibil în depozite pentru a fi instalat manual.
Presetări Cron
Cron pe Ubuntu vine cu un set de planificatoare predefinite. Le puteți verifica executând comanda de mai jos:
$ ls / etc / cron.*De obicei, aceste foldere sunt „/ etc / cron.orar ”,„ / etc / cron.zilnic ”,„ / etc / cron.lunar ”și„ / etc / cron.săptămânal".
Pur și simplu puneți scripturile dorite într-unul dintre aceste foldere pentru a rula sarcini automate orar, zilnic, lunar sau săptămânal.
Rețineți că cron folosește implicit shell-ul „/ bin / sh”. Dacă doriți să utilizați „/ bin / bash” ca shell în scripturile cron, trebuie să utilizați „!# / bin / bash ”hashbang în partea de sus a fișierului script sau definiți shell-ul ca variabilă„ SHELL = / bin / bash ”în prima linie dintr-un script bash programat. Anularea variabilei de mediu „SHELL” funcționează și pentru editorul crontab explicat mai jos.
Nu toate variabilele de mediu ale sistemului pot fi expuse la joburile cron. Deci, în general, este o idee bună să definiți manual variabile de mediu importante într-un script programat de cron.
Crontab
Crontab vă permite să vă definiți propriile sarcini programate. Puteți să-l utilizați pentru a configura programări cron diferite de cele patru presetări cron standard explicate mai sus.
Pentru a seta o sarcină programată în crontab, lansați mai întâi editorul crontab folosind comanda de mai jos:
$ crontab -eAcum, la sfârșitul fișierului, puteți adăuga o intrare în următorul format:
minut oră zi lună săptămână / complet / cale / către / script.SHUnde:
- minut: orice valoare cuprinsă între 0 și 59
- ora: orice valoare cuprinsă între 0 și 23, 0 fiind miezul nopții
- zi: orice valoare cuprinsă între 1 și 31
- lună: orice valoare cuprinsă între 1 și 12
- în timpul săptămânii: orice valoare în intervalul 0-6, 0 fiind duminică
Intrarea crontab de mai jos va face o captură de ecran a desktopului și o va stoca în directorul de acasă o dată la ora 15:13 pe 2 martie, plus în fiecare marți din martie la ora 15:13.
13 15 2 3 2 scrotPentru a lista toate intrările crontab, utilizați comanda de mai jos:
$ crontab -lMai multe exemple
Sarcinile Cron pot fi explicate cel mai bine prin exemple, așa că mai jos sunt câteva exemple care vor prelua periodic capturi de ecran ale desktopului și le vor stoca în dosarul principal.
Pe lângă cele cinci variabile de planificare, cron folosește și câteva șiruri speciale pentru a programa lucrări. Aceste șiruri sunt:
- @hourly: jobul se execută la fiecare oră
- @ zilnic / @midnight: jobul este rulat în fiecare zi
- @saptamanal: jobul ruleaza o data pe saptamana
- @lunar: jobul rulează o dată pe lună
- @yearly / @anually: jobul rulează o dată pe an
- @ reboot: jobul se execută o dată la fiecare repornire / autentificare
Intrarea crontab de mai jos va face o captură de ecran o dată la fiecare repornire:
@ rebot scrotPuteți înlocui „@reboot” cu orice alte șiruri speciale menționate mai sus.
Utilizarea unui asterisc sau a unui wildcard în locul oricăreia dintre cele cinci variabile va repeta lucrarea pe toate noile instanțe ale acelei variabile. Intrarea de mai jos va face o captură de ecran în fiecare minut:
* * * * * ScrotFiecare ora:
0 * * * * scrotÎn fiecare zi la ora 18:00:
0 18 * * * scrotÎn fiecare lună pe 6 la ora 18:00:
0 18 6 * * scrotUtilizați „/” pentru a rula un script la un interval periodic fix de 30 de minute (rulează la fiecare 30 de minute):
* / 30 * * * * scrotPuteți utiliza variabile separate prin virgulă pentru a defini executarea repetată a scriptului la intervale regulate. Exemplul de mai jos va face o captură de ecran a desktopului dvs. în fiecare minut 1, 4 și 5 dintr-o nouă oră.
1,4,5 * * * * scrotVerificarea intrărilor Crontab
Definirea intrărilor crontab poate fi dificilă, dar depanarea acestora sau verificarea dacă funcționează la timestampuri corecte este chiar mai complicată. O opțiune este să utilizați o mașină virtuală și să înregistrați marcajele de timp ale unui script care rulează periodic pe o lucrare cron, incluzând ceva de genul comenzii „dată” și redirecționând ieșirea către un fișier text. Cu toate acestea, o soluție mai bună este să utilizați unul dintre numeroasele servicii de testare a joburilor cron online disponibile pe web. Vă recomand să oferiți site-ului web cron tester Aici o incercare.
Concluzie
Rularea lucrărilor cron este o modalitate excelentă de a automatiza sarcinile repetate, în special pe servere. Instrumentul este extrem de puternic și personalizabil. Cu toate acestea, este important să vă asigurați că definiția planificatorului dvs. funcționează corect, mai ales dacă există sarcini critice pentru misiune.