|
Lucaine publicat cu ceva timp in urma excelent tutorial despre cron și crontab asta cred că merită împărtășit. Cron este un fel de echivalent cu sarcinile programate în Windows, doar că este manipulat de la terminal. Cei care preferă o interfață vizuală pentru a atinge același obiectiv, pot vedea acest lucru un alt articol. |
Ce este cron?
Numele cron provine din grecescul chronos care înseamnă „timp”. În sistemul de operare Unix, cron este un manager de proces obișnuit (daemon) care rulează procese sau scripturi la intervale regulate (de exemplu, în fiecare minut, zi, săptămână sau lună). Procesele care trebuie executate și ora la care trebuie executate sunt specificate în fișierul crontab.
lucrari COMO
Demonul cron începe de la /etc/rc.d/ o /etc/init.d în funcție de distribuție. Cron rulează în fundal, verifică tabelul de sarcini crontab în fiecare minut / etc / crontab o o / var / spool / cron în căutarea sarcinilor de îndeplinit. Ca utilizator, putem adăuga comenzi sau scripturi cu sarcini pe cron pentru a automatiza unele procese. Acest lucru este util, de exemplu, pentru a automatiza actualizarea unui sistem sau a unui sistem de backup bun.
Ce este Crontab?
Crontab este un fișier text simplu care stochează o listă de comenzi care trebuie executate la un moment specificat de utilizator. Crontab va verifica data și ora când ar trebui executat scriptul sau comanda, permisiunile de execuție și o va face în fundal. Fiecare utilizator poate avea propriul fișier crontab, de fapt / etc / crontab se presupune că este fișierul crontab al utilizatorului rădăcină, atunci când utilizatorii normali (și chiar rădăcina) doresc să își genereze propriul fișier crontab, atunci vom folosi comanda crontab.
Crontab este cel mai simplu mod de a gestiona sarcinile cron pe sisteme multi-utilizator, fie ca simplu utilizator de sistem, fie ca utilizator root.
Folosind crontab
Începem cu un exemplu simplu.
Vom automatiza actualizarea unui sistem, pentru a elimina enervantul „Trebuie să actualizez întotdeauna și nu-mi place asta!”
În primul rând vom realiza un scenariu. Acest script va fi apelat de cron și va conține toate instrucțiunile pe care dorim să le facă, de aceea este necesar să îl testăm în mai multe cazuri și în mai multe moduri înainte de a-l include în cron, un script de actualizare simplu ca acesta:
#! / bin / bash # exemplu de actualizare script # alegeți distribuția dvs. # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Eliminați # de pe linia dvs. de distribuție. În cazul în care este Ubuntu / Debian, începe cu apt-get.
Salvăm scriptul ca update.sh (de exemplu, directorul de scripturi acasă). Modificăm permisiunile de execuție ale scriptului menționat cu:
chmod a + x ~ / scripts / update.sh
Executăm scriptul de câteva ori pentru a verifica dacă totul funcționează fără probleme, modificăm ceea ce este necesar (nu trebuie să conțină erori, altfel cron va repeta o eroare doar iar și iar). Acum, pentru a adăuga sarcina la crontab-ul nostru.
Adăugați sarcini la crontab
Executăm ediția crontab cu crontab -e, în unele distribuții (cum ar fi Ubuntu) ne oferă opțiunea de a alege editorul de text pe care îl dorim, restul ne-a rămas cu vi. Fișierul crontab va arăta cam așa.
# mh dom mon dow user command
Unde:
- m corespunde minutului în care va fi executat scriptul, valoarea variază de la 0 la 59
- h ora exactă, formatul de 24 de ore este gestionat, valorile variază de la 0 la 23, 0 fiind la miezul nopții 12:00.
- cadou se referă la ziua lunii, de exemplu, puteți specifica 15 dacă doriți să rulați la fiecare 15 zile
- dow înseamnă ziua săptămânii, poate fi numerică (de la 0 la 7, unde 0 și 7 sunt duminică) sau primele 3 litere ale zilei în limba engleză: lun, mar, wed, joi, vin, sat, soare.
- utilizator definește utilizatorul care va executa comanda, poate fi root sau un alt utilizator, atâta timp cât au permisiunile de a executa scriptul.
- comandă se referă la comanda sau calea absolută a scriptului de executat, exemplu: /home/usuario/scripts/update.sh, dacă apelează un script, acesta trebuie să fie executabil
Pentru a fi clar câteva exemple de sarcini cron explicate:
15 10 * * * utilizator /home/usuario/scripts/update.sh
Acesta va rula scriptul update.sh la 10:15 în fiecare zi
15 22 * * * utilizator /home/usuario/scripts/update.sh
Acesta va rula scriptul update.sh la 10:15 în fiecare zi
00 10 * * 0 root apt-get -y update Utilizator rădăcină
Va rula o actualizare în fiecare duminică la 10:00
45 10 * * Sun Root APT -GET -Y UPDATE
Utilizatorul rădăcină va rula o actualizare în fiecare duminică (Duminică) la 10:45 dimineața
30 7 20 11 * user /home/usuario/scripts/update.sh
Pe 20 noiembrie la 7:30 utilizatorul va rula scriptul
30 7 11 11 sun user /home/usuario/scripts/pastel_con_velitas.sh
Pe 11 noiembrie la 7:30 și adică duminică, utilizatorul își va sărbători administratorul (adică eu)
01 * * * * utilizator /home/usuario/scripts/molestorecordatorio.sh
Un memento enervant în fiecare minut din fiecare oră în fiecare zi (NU este recomandat).
Ele pot fi încă manipulate game speciale:
30 17 * * 1,2,3,4,5
La 5:30 după-amiaza în fiecare zi de luni până vineri.
00 12 1,15,28 * *
La 12 am fiecare primă, cincisprezecea și 28 a fiecărei luni (ideal pentru salarizare)
Dacă acest lucru este confuz, mânere crontab șiruri speciale pentru a defini aceste intervale.
@reboot Rulați o dată, la pornire
@yearly rulează doar o dată pe an: 0 0 1 1 *
@anual la fel ca @anual
@lunar rulează o dată pe lună, prima zi: 0 0 1 * *
@weekly Weekly primul minut din prima oră a săptămânii. 0 0 * * 0 ″.
@ zilnic, la 12:00 AM 0 0 * * *
@midnight la fel ca @ zilnic
@hourly în primul minut al fiecărei ore: 0 * * * *
Utilizarea sa este foarte simplă.
@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade
Ultimul, dar nu cel din urmă:
Managementul locurilor de muncă Cron
fișier crontab
Înlocuiți fișierul crontab existent cu un fișier definit de utilizator
crontab -e
Editați fișierul crontab al utilizatorului, fiecare nouă linie va fi o nouă sarcină crontab.
crontab -l
Enumerați toate sarcinile crontab ale utilizatorului
crontab -d
Ștergeți crontab-ul utilizatorului
crontab -c dir
Definește directorul crontab al utilizatorului (acesta trebuie să aibă permisiunile de scriere și executare ale utilizatorului)
crontab -u utilizator
prefix pentru a gestiona crontabul altui utilizator, exemple:
$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u user
Acest instrument, ca multe altele, poate fi văzut mai în profunzime și mai detaliat în: