Android

Planificarea lucrărilor cron cu crontab

Терминал Linux #7.1 - crontab: запуск задач по расписанию

Терминал Linux #7.1 - crontab: запуск задач по расписанию

Cuprins:

Anonim

Cron este un demon de planificare care execută sarcini la intervale specificate. Aceste sarcini se numesc job cron și sunt utilizate în cea mai mare parte pentru automatizarea întreținerii sau administrării sistemului.

De exemplu, puteți seta o lucrare cron pentru a automatiza sarcini repetitive, cum ar fi backupul bazelor de date sau a datelor, actualizarea sistemului cu cele mai recente corecții de securitate, verificarea utilizării spațiului pe disc, trimiterea de e-mailuri etc. Unele aplicații, cum ar fi Drupal sau Magento, necesită lucrări cron pentru a efectua anumite sarcini.

Lucrările cron pot fi programate să funcționeze cu un minut, o oră, o zi din lună, o lună, o zi a săptămânii sau orice combinație dintre acestea.

Ce este fișierul Crontab

Crontab (tabelul cron) este un fișier text care specifică programul lucrărilor cron. Există două tipuri de fișiere crontab. Fișiere crontab la nivel de sistem și fișiere individuale crontab pentru utilizatori.

Fișierele crontab ale utilizatorilor sunt stocate după numele utilizatorului, iar locația lor variază în funcție de sistemele de operare. În sistemul bazat pe Red Hat, cum ar fi CentOS, fișierele crontab sunt stocate în directorul /var/spool/cron , iar fișierele Debian și Ubuntu sunt stocate în directorul /var/spool/cron/crontabs .

Deși puteți edita fișierele utilizatorului crontab manual, este recomandat să utilizați comanda crontab .

/etc/crontab și fișierele din directorul /etc/cron.d sunt fișiere crontab la nivel de sistem care pot fi editate numai de către administratorii de sistem.

În majoritatea distribuțiilor Linux puteți, de asemenea, să puneți scripturi în directorii /etc/cron.{hourly, daily, weekly, monthly} , /etc/cron.{hourly, daily, weekly, monthly} , /etc/cron.{hourly, daily, weekly, monthly} , /etc/cron.{hourly, daily, weekly, monthly} , iar scripturile vor fi executate la fiecare hour/day/week/month .

Sintaxă și operatori Crontab

Fiecare linie din fișierul user crontab conține șase câmpuri separate printr-un spațiu urmat de comanda care trebuie rulată.

* * * * * command(s) - - - - - | | | | | | | | | ----- Day of week (0 - 7) (Sunday=0 or 7) | | | ------- Month (1 - 12) | | --------- Day of month (1 - 31) | ----------- Hour (0 - 23) ------------- Minute (0 - 59)

Primele cinci câmpuri pot conține una sau mai multe valori, separate printr-o virgulă sau o gamă de valori separate printr-o cratime.

  • * -Operatorul de asterisk înseamnă orice valoare sau întotdeauna. Dacă aveți simbolul asterisc în câmpul Ora, înseamnă că sarcina se va efectua în fiecare oră. , -Operatorul de virgule vă permite să specificați o listă de valori pentru repetare. De exemplu, dacă aveți 1, 3, 5 în câmpul Ora, sarcina se va desfășura la 1 dimineața, 3 dimineața și 5 dimineața. --Operatorul cratima vă permite să specificați o gamă de valori. Dacă aveți 1-5 în câmpul Ziua săptămânii, sarcina se va desfășura în fiecare zi săptămânală (de luni până vineri). / -Operatorul slash vă permite să specificați valori care se vor repeta pe un anumit interval între ele. De exemplu, dacă aveți */4 în câmpul Ora, înseamnă că acțiunea va fi efectuată la fiecare patru ore. Este identic cu specificarea 0, 4, 8, 12, 16, 20 . În loc de asterisc înainte de operatorul de slash, puteți utiliza, de asemenea, o gamă de valori, 1-30/10 înseamnă la fel ca 1, 11, 21 .

Fișiere Crontab la nivel de sistem

Sintaxa fișierelor crontab din întregul sistem este ușor diferită de cea a utilizatorilor crontab. Conține un câmp de utilizator obligatoriu suplimentar care specifică ce utilizator va rula lucrarea cron.

* * * * * command(s) * * * * * command(s)

Macro predefinite

Există mai multe macro-uri speciale pentru programul Cron utilizate pentru a specifica intervale comune. Puteți utiliza aceste comenzi rapide în locul specificației date cu cinci coloane.

  • @yearly (sau @annually ) - Rulați sarcina specificată o dată pe an la miezul nopții (12:00 am) de 1 ianuarie. Echivalent cu 0 0 1 1 * . @monthly - Rulați sarcina specificată o dată pe lună la miezul nopții din prima zi a lunii. Echivalent cu 0 0 1 * * . @weekly - Rulați sarcina specificată o dată pe săptămână la miezul nopții duminică. Echivalent cu 0 0 * * 0 . @daily - Rulați sarcina specificată o dată pe zi, la miezul nopții. Echivalent cu 0 0 * * * . @hourly - Rulați sarcina specificată o dată pe oră la începutul orei. Echivalent cu 0 * * * * . @reboot - Rulați sarcina specificată la pornirea sistemului (timp de pornire).

Comanda Linux Crontab

Comanda crontab vă permite să instalați sau să deschideți un fișier crontab pentru editare.

Puteți utiliza comanda crontab pentru a vizualiza, adăuga, elimina sau modifica lucrări cron folosind următoarele opțiuni:

  • crontab -e - Editați fișierul crontab sau creați unul dacă acesta nu există deja. crontab -l - Afișează conținutul fișierului crontab. crontab -r - Ștergeți fișierul dvs. crontab actual. crontab -i - Ștergeți fișierul dvs. crontab actual cu o solicitare înainte de eliminare. crontab -u - Editați alt fișier de utilizare crontab. Necesită privilegii de administrator de sistem.

Comanda crontab deschide fișierul crontab folosind editorul specificat de variabilele de mediu VISUAL sau EDITOR .

Variabile Crontab

Demonul cron stabilește automat mai multe variabile de mediu.

  • Calea implicită este setată pe PATH=/usr/bin:/bin . Dacă comanda apelată este prezentă în calea specificată cron, puteți utiliza calea absolută către comandă sau puteți modifica variabila cron $PATH . Nu puteți adăuga implicit :$PATH așa cum s-ar face cu un script obișnuit. Shell-ul implicit este setat pe /bin/sh . Puteți seta o coajă diferită modificând variabila SHELL invocă comanda din directorul de acasă al utilizatorului. Variabila HOME poate fi anulată prin setări în crontab. Notificarea prin e-mail este trimisă proprietarului crontab. Pentru a suprascrie comportamentul implicit, puteți utiliza variabila de mediu MAILTO cu o listă (separată prin virgulă) cu toate adresele de e-mail pe care doriți să le primiți notificările prin e-mail. Dacă MAILTO este definit, dar gol ( MAILTO="" ), nu se trimite nicio mail.

Restricții Crontab

Administratorii de sistem pot controla ce utilizatori au acces la comanda crontab folosind fișierele /etc/cron.allow și /etc/cron.allow . Fișierele constau dintr-o listă de nume de utilizator, un nume de utilizator pe linie.

În mod implicit, doar fișierul /etc/cron.deny există și este gol, ceea ce înseamnă că toți utilizatorii pot utiliza comanda crontab. Dacă doriți să refuzați accesul la comenzile crontab unui anumit utilizator, adăugați numele de utilizator la acest fișier.

Dacă fișierul /etc/cron.allow există numai utilizatorii care sunt enumerați în acest fișier pot utiliza comanda crontab .

Dacă niciun fișier nu există, numai utilizatorii cu privilegii administrative pot utiliza comanda crontab .

Exemple de locuri de muncă Cron

Mai jos sunt câteva exemple de job cron care vă vor arăta cum să programați o sarcină pentru a rula pe perioade de timp diferite.

  • Rulați o comandă la 15:00 în fiecare zi, de luni până vineri:

    0 15 * * 1-5 command

    Rulați un script la fiecare 5 minute și redirecționați ieșirea standard către dev null , numai eroarea standard va fi trimisă la adresa de e-mail specificată:

    [email protected] */5 * * * * /path/to/script.sh > /dev/null

    Rulați două comenzi în fiecare luni la 15:00 (folosiți operatorul && între comenzi):

    0 15 * * Mon command1 && command2

    Rulați un script PHP la fiecare 2 minute și scrieți ieșirea într-un fișier:

    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log

    Rulează un script în fiecare zi, în fiecare oră, pe oră, de la 8 AM până la 16:00:

    00 08-16 * * * /path/to/script.sh

    Rulați un scenariu în prima zi de luni a fiecărei luni, la 7 dimineața

    0 7 1-7 * 1 /path/to/script.sh

    Rulează scenariul la 21:15, în 1 și 15 din fiecare lună:

    15 9 1, 15 * * /path/to/script.sh

    Setați PATH personalizate HOME , PATH , SHELL și MAILTO și executați o comandă în fiecare minut.

    HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command

Concluzie

Ați învățat cum să creați joburi cron și să programați sarcinile la o anumită dată și oră.

Simțiți-vă liber să lăsați un comentariu dacă aveți întrebări.

terminalul cron crontab