Cron este un programator robust care vă permite să programați scripturi sau comenzi și să le rulați în mod regulat. Este bătăile inimii care păstrează diverse programe și scripturi personalizate. Programați scripturi pentru a rula în fișierul crontab. Deși acest fișier poate fi intimidant la prima vedere, este ceva ce poate fi ușor de înțeles cu puțină practică.
În unele distribuții Linux, cum ar fi Arch Linux, cron nu este instalat în mod implicit, deoarece folosește systemd ca înlocuitor cron. De asemenea, există diverse implementări cron și fiecare are propriul mod de editare / planificare a lucrărilor cron. În acest tutorial ne vom concentra pe cronie, care este implicit în majoritatea distribuțiilor Linux, cum ar fi Ubuntu.
Vizualizarea intrărilor cron
Vizualizarea crontab-ului vă permite să vizualizați activitățile programate care vor rula sub contul dvs.
crontab -l
De asemenea, puteți vizualiza sarcinile programate pentru contul root utilizând sudo
.
sudo crontab -l
Editarea intrărilor cron
Dacă nu ați configurat niciodată un job cron, vizualizarea acestui fișier va afișa un fișier gol sau un fișier cu comentarii. Pentru a adăuga o intrare, va trebui să deschideți fișierul crontab folosind -e
opțiune.
crontab -e
Intrările Crontab vor urma întotdeauna aceeași sintaxă, permițându-vă să inspectați intrările pe orice mașină, precum și să le creați programatic.
Sintaxa de bază pentru o expresie de intrare crontab este:
m h d mon dow command
- m = minut între 0 și 59
- h = oră între 0 și 23
- d = ziua lunii între 1 și 31
- lun = lună între 1 și 12
- dow = ziua săptămânii între 0 și 6. Zero este duminică.
- Comandă = comanda de executat.
De exemplu, trebuie să rulați regulat o comandă pentru a verifica dacă serverul dvs. mysql funcționează bine. Pentru ca comanda să ruleze orar, utilizați următoarea sintaxă:
0 * * * * mysqlcheck --all-databases --check-only-changed --silent
Aceasta înseamnă că va rula pe punct la fiecare oră. Dacă doriți doar să ruleze la 1.42am în fiecare zi, atunci comanda devine:
42 1 * * * mysqlcheck --all-databases --check-only-changed --silent
În plus, virgulele pot fi utilizate pentru mai multe articole (cum ar fi 1,3,5) și cratimele pot fi utilizate pentru intervale. Utilizarea specială a asteriscului în locul unui element din expresie indică ca articolul să ruleze pentru toate valorile câmpului. (Un asterisc din câmpul orei ar spune să ruleze pentru fiecare oră de la 0 la 23.) Un hashtag (#) pe o linie indică un comentariu (ceea ce înseamnă că linia de cod nu va fi executată).
În cele din urmă, o bară directă va indica o valoare a pasului. De exemplu, la fiecare cinci minute ar fi introduse ca * / 5 (din momentul în care crontabul este salvat și se creează jobul cron). Dacă ar fi să folosiți doar „5”, intrarea va rula doar la valoarea de cinci minute.
Pentru acest exemplu:
34 3 * * 0 mysqlcheck --all-databases --check-only-changed --silent
- 34: minutul pentru a rula între 0 și 59
- 3: ora, între 0 și 23
- *: cele două asteriscuri din mijloc indică în fiecare zi (1 la 31) și în fiecare lună (1 la 12)
- 0: zero final care indică duminica
Această sarcină va rula la 3:34 AM în fiecare lună, în fiecare săptămână duminica.
Coduri scurte
Crontab vă permite să utilizați câteva coduri scurte pentru a ușura citirea intrărilor cron.
-
@reboot
– Rulați o dată, la pornire -
@yearly
– Rulați o dată pe an, „0 0 1 1 *”. -
@annually
– la fel ca @yearly -
@monthly
– Rulați o dată pe lună, „0 0 1 * *” -
@weekly
– Rulați o dată pe săptămână, „0 0 * * 0” -
@daily
– Rulați o dată pe zi, „0 0 * * *” -
@midnight
– la fel ca @ zilnic -
@hourly
– Rulați o dată pe oră, „0 * * * *”
De exemplu:
@hourly mysqlcheck --all-databases --check-only-changed --silent
Editarea intrărilor cron ca alt utilizator
Există momente când trebuie să adăugați un crontab ca root. De exemplu, pentru a reînnoi automat certificatul SSL Let’s Encrypt, trebuie să rulați scriptul de reînnoire ca root. Pentru a edita crontab ca root, pur și simplu adăugați un sudo
în fața comenzii:
sudo crontab -e
În mod similar, puteți programa cron job ca alt utilizator, utilizând -u
steag:
sudo crontab -u username -e
De exemplu, pentru a rula un job cron ca utilizator „www-data”, utilizați următoarea comandă:
sudo crontab -u www-data -e
Revizuirea activității cron
Deși acum sunteți setat să executați anumite comenzi sau scripturi, vă recomandăm să vă asigurați că a rulat. Încorporat în cron este că odată executată o comandă, acesta va trimite prin e-mail proprietarului cron. Acest lucru poate fi schimbat cu variabila „MAILTO”.
Se adaugă [email protected]
va trimite toate rapoartele de job cron la un e-mail specificat. Această variabilă poate fi de obicei găsită chiar în partea de sus a ecranului de editare crontab. Cu toate acestea, dacă nu există, puteți adăuga variabila și va funcționa așa cum era de așteptat.
Mai multe adrese de e-mail pot fi separate prin virgulă. Dacă aveți nevoie de o comandă diferită trimisă prin e-mail în altă parte, puteți adăuga comanda MAILTO direct deasupra comenzii. Comenzile după acel mailto vor fi trimise prin e-mail la noua adresă. Dacă pleci MAILTO=
necompletat, notificările vor fi trimise proprietarului intrării cron.
Alternativ, puteți utiliza operatorul de redirecționare (>) pentru a trimite ieșirea acolo unde este necesar.
34 3 * * 0 mysqlcheck --all-databases --check-only-changed --silent > /dev/null
Cele de mai sus vor redirecționa ieșirea către „/ dev / null”, care nu trimite niciun e-mail și renunță la ieșire.
Dacă doriți să vă asigurați că s-a executat un job și nu doriți un e-mail, puteți verifica și jurnalele cron. Pe majoritatea sistemelor, accesarea jurnalelor cron va necesita permisiuni pentru superutilizatori. Jurnalul cron poate fi găsit sub „/ var / log”. Fișierul cron sau syslog va afișa jurnalul intrărilor cron executate.
sudo grep crontab syslog
Cronul poate fi restricționat în continuare pentru a permite utilizarea specifică, iar setările implicite pot fi configurate. Cu adăugarea de conducte și redirecționare, intrările cron pot fi configurate pentru a face tot felul de lucruri. În cele din urmă, cron este un instrument pentru a vă oferi posibilitatea de a rula sarcini în timpul liber și pentru a asigura întreținerea de rutină a părților sistemului dvs., după voia dvs.