Contacte

Variabile cron suplimentare. Configurare cron ușoară pe Linux Configurare Cron la fiecare 5 minute

În Unix, este posibil să rulați programe de utilizator la ora specificată de utilizator. Pentru aceasta se folosește programul cron, care primește instrucțiuni de la utilizatori și, urmându-le, realizează executarea oricăror sarcini conform scripturilor primite. Clienții noștri pot folosi această funcție pentru a efectua sarcini periodice.

Cum se configurează cron în contul personal (pentru tarife Unix)

Deoarece nu toate programele PHP pot fi rulate prin CLI SAPI fără modificare prealabilă, este posibil să le rulați wget. De exemplu:

/usr/local/bin/wget -O /dev/null -q http://mysite.tld/cron.php?action=123

Dacă scriptul folosește funcții cere, include, și conțin căi relative, apoi la începutul scriptului care se execută, utilizați apelul funcției chdir(), care va seta directorul de lucru curent.

Cum să primiți mesaje de eroare de la programele rulate de cron

Dacă întâmpinați erori în timpul executării unui program care este rulat din cron, probabil că veți dori să primiți mesaje de eroare pentru a controla pe deplin funcționarea joburilor rulate periodic. Pentru a face acest lucru, plasați următoarea linie la începutul scriptului cron:

MAILTO=adresă@domeniu.ru

Desigur, [email protected] trebuie înlocuit cu o adresă de e-mail reală la care vor trebui să fie livrate notificările. Dacă trebuie să primiți mesaje de eroare la mai multe adrese, specificați toate aceste adrese separate prin virgulă.

Vă rugăm să rețineți că cron va trimite prin poștă ceea ce scoate scripturile de rulare. De exemplu, dacă scrieți un script care tipărește linia „Hello, world” și îl puneți în execuție prin cron, veți primi un e-mail cu linia „Hello, world” de fiecare dată când cron rulează un astfel de script.

Pentru a evita acest lucru, de exemplu, când nu aveți nevoie de textul ieșit de script, trebuie să adăugați caractere la sfârșitul șirului de script pentru cron

> /dev/null 2>&1

Linia completă pentru cron va arăta astfel:

0 1 * * * /usr/local/bin/php -q $HOME/script.php > /dev/null 2>&1

Vă recomandăm să verificați sintaxa corectă a scripturilor pe care le-ați setat să le ruleze prin cron. Scripturile pot conține o eroare, pot să nu funcționeze în același mod atunci când sunt rulate printr-un server web și prin cron și așa mai departe. Pentru a vă asigura că scriptul va funcționa corect prin cron, verificați-l mai întâi cu următoarea comandă în shell-ul Unix:

/usr/local/bin/php -l script.php

Dacă nu există erori în script, veți vedea mesajul „No syntax errors detected in script.php”.

Restricții

Programele rulate prin cron sunt supuse acelorași limite de resurse ca și procesele rulate de un utilizator într-un shell Unix. Vorbim despre restricții privind timpul de execuție al programului, cantitatea de memorie disponibilă, restricțiile privind dimensiunea fișierului și așa mai departe.

Foarte des, pe sisteme asemănătoare Linux, poate fi necesară automatizarea unor procese de rutină. Pentru aceasta, se folosesc programatoare speciale. Una dintre cele mai faimoase dintre ele este Cron, ale cărui setări vor fi discutate în acest articol.

Ce este Cron?

Numele programului este derivat din grecescul „chronos”, adică timp. Ceea ce este de fapt logic. Sarcina demonului este să execute comenzile scrise în el în anumite momente. Procesul de implementare în sine se bazează pe verificarea tabelelor cron și pe compararea lor cu și timp.

fișier crontab

Cel mai important element al configurarii Cron este fișierul de configurare crontab. Conține comenzi de execuție și căi către scripturi. Toate rulează ca superutilizator. Deoarece se află în directorul /etc/cron.d, aceste fișiere trebuie configurate acolo.

Fiecare utilizator individual de sistem are propriul său fișier crontab.

Diferite distribuții Linux folosesc propriile directoare pentru a stoca setările utilizatorului. Pentru RedHat, aceasta este var / bobină/cron. Pe Debian și Ubuntu, acesta va fi var/spool/cron/crontabs. Și var/spool/cron/tabs în SUSE.

Lista de comenzi pentru gestionarea crontab

Cron are un set de directive speciale care pot fi folosite pentru a controla planificatorul. Trebuie să le folosiți împreună cu crontab. Iată o listă scurtă:

  • -u nume de utilizator. Setează utilizatorul ale cărui sarcini și setări vor fi utilizate pentru acțiuni ulterioare. Dacă omiteți această cheie, utilizatorul implicit va fi setat.
  • -l. Afișează lista curentă de sarcini.
  • -e. Lansează editorul pentru planificatorul de activități.
  • -r. Elimină toate sarcinile existente din listă.

Format de sarcină

După cum am menționat mai sus, configurarea Cron constă în setarea comenzilor într-un fișier special. Arată ca o înregistrare simplă constând din șase coloane:

  • primul este numărul de minute. Intervalul disponibil este de la 0 la 59. Pot fi utilizate valori multiple, un interval și caractere speciale;
  • a doua coloană este orele. Pot fi utilizate valori de la 0 la 23;
  • mai departe - zi. Aici puteți introduce un număr de la 1 la 31;
  • luna a patra. Valoarea minimă este 1, maxima este 12;
  • saptamana a cincea. 0 sau 7 corespunde duminicii;
  • ultima comandă este cea care se execută.

După cum sa menționat, caracterele speciale, „*” sau „/” pot fi specificate în fișier. De exemplu, o astfel de intrare - 23 */2 *** echo "Run" înseamnă că la fiecare oră și 23 de minute va fi afișată inscripția "Run".

Caracteristicile fișierului crontab

Când configurați Cron, trebuie să vă amintiți că are proprietăți specifice care ar trebui să fie luate în considerare la configurare:

  • fiecare fișier trebuie să se încheie cu o linie goală, altfel ultimul element poate fi ignorat și, uneori, întregul fișier;
  • fișierele aflate în directoare cu un punct în numele lor vor fi, de asemenea, ignorate de planificator;
  • semnele lire „#” pot fi folosite în fișierele de configurare. Sunt folosite pentru a marca linii cu comentarii. Acest lucru este foarte util pentru descrierea sarcinilor și comenzilor programate.

Variabile suplimentare

Când configurați Cron, puteți utiliza valori speciale și abrevieri în comenzi. De exemplu, pentru a specifica ziua săptămânii, puteți utiliza următoarea listă:

  • soare - duminica
  • mon - luni
  • marţi - marţi;
  • miercuri - miercuri;
  • thu - joi;
  • vineri - vineri
  • sat - sâmbătă.

Există, de asemenea, valori separate pentru litere pentru luni - jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.

Există, de asemenea, variabile separate pentru configurarea Cron care pot înlocui linii de comandă întregi:

  • @reboot. Comanda va rula de fiecare dată când computerul este pornit;
  • @anual. Această sarcină se va desfășura o dată pe an. Notația echivalentă în formă numerică poate fi: 0 0 1 1 *. Sinonimul său poate fi scris și ca @anual;
  • @lunar. După cum ați putea ghici din nume, această variabilă rulează comanda o dată pe lună. Omologul său numeric este 0 0 1 * *;
  • @săptămânal. Această variabilă va rula în fiecare săptămână;
  • @zilnic. O data pe zi;
  • @miezul nopţii. Lansarea va avea loc la miezul nopții;
  • @la oră. Fiecare ora.

Configurarea Cron pe Centos 7

Procesul de instalare și configurare în sine nu este mult diferit de alte distribuții Linux similare. Înainte de a configura Cron pe Centos, trebuie să instalați pachetul Cronie pe sistem. Puteți face acest lucru cu comanda yum install cronie. Pentru a crea un fișier cu instrucțiuni, trebuie să rulați crontab -e în terminal. Toate setările sistemului Cron vor fi stocate la /var/spool/cron/username.

Câteva exemple utile pentru crearea de sarcini frecvent recurente

Este posibil să personalizați Cron în așa fel încât să acopere aproape toate nevoile oricărui utilizator.

  • 00 09-17 * * 1 - 5 /cale/ către comandă/coronă. Această comandă va executa automat acțiunea programată în fiecare zi lucrătoare de la 9:00 la 17:00 în fiecare prim minut;
  • 00 9.17 * * * /cale/ către comandă/ cron. În acest exemplu, comanda este executată de două ori pe zi. Primul la 9, al doilea - la ora 5. Semnul „*” indică faptul că comanda va fi executată în fiecare zi, lună și an;
  • De asemenea, nu uitați de variabilele simbolice. De exemplu, @monthly va rula sarcina în fiecare lună în primul minut din prima oră a primei zile. Și @dayly va rula în fiecare zi.

Cron (coroane), Crontab (crontab), Gestionar de sarcini- aceste nume au fost auzite de toți cei care sunt asociati cu „constructia site-ului” de mai multe ori. Deci, ce este Cron? Cum să lucrezi cu el? De ce este nevoie de Cron și cum să-l configurezi corect? Vom analiza toate aceste întrebări astăzi.

Primul lucru pe care vreau să-l remarc imediat: Cron , Crontab , Gestionar de sarcini- e tot la fel, nu te jena de varietatea numelor.

În practica oricărui webmaster, va fi invariabil nevoia de a rula anumite sarcini într-un program. Acestea. Pur și simplu scrieți comanda de care aveți nevoie pentru a efectua o sarcină la un moment dat și asta este tot. Apoi totul se întâmplă fără participarea ta - automat și ceea ce este cel mai plăcut la momentul potrivit pentru tine.

De exemplu, trebuie să trimiteți periodic notificări prin e-mail partenerilor. Sau doriți să configurați salutări sau mementouri automate. Sau aveți un director de site-uri și doriți ca scriptul directorului să verifice backlink-urile la o frecvență specificată etc. Toate aceste sarcini pot fi automatizate cu ușurință, încredințând acest lucru lui Cron sau, după cum se spune - Planificator de sarcini. Și există scripturi în care Cron este pur și simplu necesar pentru funcționarea normală.

Aproape toate găzduirile moderne oferă o funcție gata făcută Planificator de sarcini. Dacă nu există o astfel de funcție pe Gazduire, atunci este mai bine să nu contactați o astfel de companie de Gazduire. Cron nu mai este un lux în aceste zile, iar dacă Hosting nu oferă un task scheduler în pachetul de servicii, este mai bine să cauți o altă companie, probabil că nu vor mai exista alte funcții importante.

Deci, să ne uităm la toți pașii practici pentru configurarea Cron folosind exemplul cPanelului Russified (panoul de control al site-ului) Compania de găzduire Hudson. De ce exact Hudson? Este simplu - site-ul meu locuiește aici și îmi place foarte mult această găzduire: un pachet complet cu toate cele mai multe servicii posibile la un preț foarte rezonabil.

Deși decorul Planificator de sarcini se întâmplă la fel peste tot.

Mergem la panoul de control al site-ului, în acest caz este cPanel (sunt altele). Accesul vă este acordat imediat după cumpărare gazduire, mergeți mai jos și găsiți această secțiune, Instrumente suplimentare:

Găsim în această secțiune Gestionar de sarciniși faceți clic pe el. Uneori, acest meniu se numește Panoul Cron. Iată cum este caracterizat Cron:

„Programatorul de sarcini vă permite să rulați comenzi la o oră specificată fără participarea dvs. Acest lucru vă permite să automatizați sarcinile recurente în mod regulat. Programatorul de sarcini este foarte flexibil și vă permite să automatizați execuția oricăror comenzi pe care doriți să le executați. De exemplu, îi poți spune programatorului să ștergă fișierele temporare în fiecare săptămână, astfel încât acestea să nu ocupe prea mult spațiu pe unitate.”

Există două opțiuni pentru gestionarea Cron:

Standard și Avansat (stil Unix) Să aruncăm o privire la fiecare dintre ele.

Prima varianta. Faceți clic pe butonul Standard, se deschide fereastra de configurare a activității:

După cum puteți vedea, totul este foarte simplu aici. Trebuie doar să setați ora de execuție a comenzii, indicând pentru aceasta în câmpurile corespunzătoare când va fi lansată comanda, la ce oră: minute, Ora, Zi, Lună, Zi a săptămânii. Și, desigur, scrieți comanda de lansare în sine în câmp: comanda pentru a rula.

Valorile pot fi scrise fie manual (în câmpul din stânga), fie folosind lista derulantă (săgeți la dreapta).

Să vedem ce am scris aici. Și am scris următoarea sarcină: rulați comanda pentru execuție:
/usr/bin/php /home/freeman/domains/public_html/cron/new_day.php
la fiecare 30 de minute, la fiecare 6 ore, în fiecare zi a lunii ianuarie dacă cade luni.

După setarea sarcinii, faceți clic pe butonul Adăugați o nouă lucrare Cron.

Nu este clar ce au scris? :) Să ne uităm la a doua opțiune, apoi o să explic mai detaliat. Revenim la pagina anterioară.

A doua varianta. Facem clic pe buton Avansat (stil Unix), se deschide fereastra de configurare a activității:

Îmi place mai mult această opțiune pentru setarea sarcinii Kron. Și deși se numește Advanced, în opinia mea este mai simplu și mai convenabil.

Aici, ca și în primul caz, trebuie să specificați când va fi lansată comanda, mai indicăm: minute s, Ora s, Zi, Lună, Zi a săptămâniiși însăși sarcina pentru execuție în teren Echipă. După aceea, faceți clic pe butonul Adăugați Cronjob. Sarcina este stabilită. Pagina este actualizată:

Și puteți adăuga o nouă sarcină repetând din nou întreaga procedură. Puteți șterge o sarcină făcând clic pe cruce de lângă sarcină din dreapta.

Mai există un parametru opțional, dar recomand să-l prescriu: acesta Adresa de e-mail. La această adresă va fi trimis un raport privind executarea comenzii. Câmpul este opțional, dar este mai bine să introduceți adresa pentru a fi la curent cu problema, dacă ceva nu merge bine, Cron vă va informa despre asta într-o scrisoare, iar dacă scrisoarea este goală, atunci totul este OK!

Ce am scris aici? Rulați comanda la 11 minute, la fiecare a 2-a oră, în fiecare zi, în fiecare lună, în prima, a 3-a, a 5-a, a 7-a zi a săptămânii.

În câmpul de selecție: minute specificați minutul (sau minutele) la care sarcina va fi lansată în teren Ora specificați ora (sau orele) la care (e) va fi efectuată sarcina, precum și ziua (zile) și luna (lunile), în fiecare câmp puteți specifica atât o anumită oră, cât și un interval.

De exemplu, puteți specifica nu doar 11 minute, ci 11-15 (interval), ceea ce înseamnă că sarcina va rula la fiecare 11, 12, 13, 14, 15 minute. Sau specificați minute specifice, de exemplu: 11, 14, 18 - aceasta înseamnă că sarcina se va rula la 11, 14 și 18 minute. Puteți folosi și semnul * (asterisc)- reprezintă fiecare. Dacă se pune * (asterisc)în câmpul Minute, apoi, în consecință, sarcina va fi lansată în fiecare minut, i.e. de 60 de ori pe oră.

În fiecare câmp, puteți specifica atât un anumit timp, cât și un interval, precum și să utilizați asteriscuri.

Înregistrare */2 reprezintă: la fiecare 2 ore. Toate aceste variații de înregistrare se aplică tuturor câmpurilor ( minute s, Ora s, Zi, Lună, Zi a săptămânii) când se specifică sarcina către Kron. Înțelegeți că pot exista milioane de opțiuni, rulați sarcina pentru execuție, cel puțin în fiecare minut pe tot parcursul anului. Desigur, o astfel de nevoie nu apare aproape niciodată, dar teoretic o astfel de posibilitate există.

Și rețineți că unele Hostinguri impun restricții la lansarea Cron, de exemplu, nu mai mult de 3 - 10 ori pe oră. De ce? Există o încărcare destul de semnificativă pe server. Încălcarea poate duce la suspendarea contului dvs.

Acum să vedem cum este completat câmpul comanda pentru a rula(în prima variantă) sau Team (în a doua variantă).

Sarcina este stabilită după cum urmează.

În primul rând, specificați calea către PHP pe serverul dvs., pe serverul meu calea este /usr/bin/php, este posibil să aveți o cale diferită, verificați cu administratorii de server, după calea către PHP puneți un spațiu și scrieți calea internă completă către fișierul pe care ar trebui să-l ruleze Cron. Să presupunem că am nevoie de Cron pentru a rula fișierul mail.php, cunoscând calea internă către fișier, scriu următoarele:

public_html/cron/mail.php

acestea. în folderul rădăcină public_html, există un folder cron în care se află fișierul mail.php, iar comanda completă pentru a rula fișierul mail.php va arăta astfel:

/usr/bin/php /public_html/cron/mail.php

Pe diferite găzduiri, calea către PHP poate diferi și poate fi scrisă diferit, folderul rădăcină al locației site-ului nu este întotdeauna cazul public_html, deci dacă nu există un exemplu specific de înregistrare a unei sarcini Kron, atunci este mai bine să întrebați administratorul despre aceasta, descriind ce doriți să obțineți în final. Bun

Original: Utilizarea cron scheduler pe sistemele Linux
Autor: Rares Aioanei
Data publicării: 29 septembrie 2011
Traducere: A. Krivoshey
Data transferului: noiembrie 2011

1. Introducere

Dacă aveți deja experiență în administrarea sistemului Linux, ar trebui să știți ce este cron și pentru ce este. Dacă abia începeți să lucrați cu Linux, atunci aceste cunoștințe vă vor fi utile. Chiar dacă ați învățat deja cum să utilizați cron, acest articol vă va ajuta să vă reîmprospătați cunoștințele.
Numele cron provine de la Cronos, personificarea greacă antică a timpului. Și este un nume bine ales, deoarece scopul principal al cron este de a ajuta la programarea diferitelor sarcini de care sistemul trebuie să ruleze la un moment dat. Dacă ați folosit Windows, atunci probabil a trebuit să căutați în utilitarul Sarcini programate. În general, scopul programelor este similar, dar implementarea este diferită. Cron este proiectat pentru sarcini serioase de administrare a sistemului și are mai multă flexibilitate. Un exemplu de sarcină reală este backup. Doriți să faceți manual copii de rezervă ale datelor de pe câteva sute de mașini? Cred că nu. Doar scrieți un script simplu folosind rsync, programați-l să ruleze zilnic, de exemplu, și uitați de el. Tot ceea ce este necesar în viitor este să verificați jurnalele din când în când. Unii chiar folosesc cron pentru a le aminti de evenimente personale importante, cum ar fi zilele de naștere. Dar cron este doar un demon care rulează joburile pe care le specificați. Există un utilitar care să ajute la editarea/adăugarea/ștergerea acestor sarcini? Desigur că există și se numește crontab (din tabelul cron). Cu toate acestea, vom avansa secvențial și vom începe cu instalarea.

2. Instalați cron

Majoritatea distribuțiilor folosesc Vixie Cron și alte derivate ca implementare implicită a cron, iar acestea sunt cele pe care le vom acoperi în acest articol. În plus, cron este deja preinstalat în aproape toate distribuțiile, deoarece este o parte foarte importantă a sistemului Linux. Deși utilizatorul obișnuit nu lucrează niciodată direct cu acesta, sistemul și multe aplicații folosesc cron (un exemplu bun este actualizarea periodică a bazei de date a paginii de manual). Excepția notabilă este Gentoo, unde trebuie să instalați manual vixie-cron și să îl adăugați la nivelul de rulare implicit. Pe Arch, Debian, Slackware, Ubuntu, Fedora și OpenSUSE cron este instalat în mod implicit și pornește automat când sistemul pornește. Sperăm că veți studia paginile de manual pentru cron și crontab, deoarece multe distribuții folosesc versiuni corectate ale acestora, ceea ce se face pentru a integra mai bine programul pentru o anumită distribuție. Prin urmare, există posibilitatea ca o funcție disponibilă, de exemplu, în Gentoo, să nu fie disponibilă în Slackware. În orice caz, nu este nimic mai bun decât citirea paginilor de manual, mai ales dacă ai de-a face cu un program nou pe care îl vei folosi destul de des.

3. Folosind cron

În primul rând, trebuie să ne asigurăm că cron rulează:

$ ps fals | grep cron

Dacă nu există nimic în ieșire, verificați dacă cron rulează și adăugați-l la serviciile implicite, astfel încât să pornească la următoarea pornire. Cum se face acest lucru depinde de distribuție. Pe sistemele Debian, comanda ar trebui să scoată ceva de genul acesta:

Rădăcină 1424 0,0 0,0 22000 884 ? Ss 13:56 0:00 /usr/sbin/cron

Acum să facem ca cron să funcționeze. Mai întâi trebuie să ne gândim ce comandă vom folosi. Are nevoie de privilegii de root? Să presupunem că folosim crontab pentru a adăuga un script simplu care să ruleze la fiecare cinci minute ca utilizator simplu.

3.1. Crontab

3.1.1. Exemplu

Să scriem un script simplu care va afișa un dialog obișnuit bazat pe blesteme în terminal (necesită dialog și orice emulator de terminal - folosim xterm):

#!/bin/sh xterm -e "dialog --msgbox "Testing cron..." 234 234" # Acesta este un exemplu foarte simplu, tratați-l așa cum este

Să denumim fișierul crontest.sh și să îl facem executabil, deoarece tot ce este rulat cu cron trebuie să fie executabil:

$ chmod +x crontest.sh

Acum trebuie să edităm tabelul crontab al utilizatorului pentru a adăuga o intrare pentru scriptul nostru minunat:

E este setat pentru editare, -r pentru ștergere. Fii foarte atent! Mulți administratori de sistem au introdus din greșeală -r în loc de -e, mai ales că aceste chei sunt situate în apropiere și au șters toate intrările din crontab. În orice caz, cel mai probabil veți vedea un fișier complet comentat (crontab folosește # pentru a desemna comentarii), care oferă exemple și descrie scopul câmpurilor de înregistrare. Da, înregistrarea constă din câmpuri, ultimul dintre care specifică comanda care trebuie executată, iar restul sunt caracteristici de sincronizare. Deci, intrarea noastră crontab pentru un script care rulează la fiecare cinci minute arată astfel:

$ */5 * * * * export DISPLAY=:0 && /home/$user/crontest.sh

Trebuie să exportăm variabila DISPLAY, astfel încât xterm să nu afișeze erori „DISPLAY nu este setat”. Acum să vedem scopul fiecărui câmp.

3.1.2. Câmpurile Crontab

Dacă ați mai lucrat cu metacaracterele, nu veți avea probleme în a învăța cum să utilizați asteriscul în crontab: înseamnă că toate valorile posibile de câmp sunt înlocuite cu acesta. Câmpurile implicite pe Linux (ai grijă, unele sisteme Unix folosesc implementări cron diferite) sunt, de la stânga la dreapta: minut, ora, ziua lunii, luna, ziua săptămânii, anul (opțional) și comanda de executat. Astfel, dacă dorim ca scriptul nostru să ruleze la fiecare cinci minute, în fiecare oră, în fiecare zi, în fiecare lună și în fiecare an, intrarea noastră ar trebui să arate astfel:

5 * * * * export DISPLAY=:0 && /home/$user/crontest.sh

Vă îndemnăm să aveți grijă la câmpul zilei săptămânii: în țara dumneavoastră prima zi a săptămânii poate fi luni, dar în alte țări poate fi duminică. Dacă lucrezi într-un mediu multicultural, multinațional, trebuie să fii conștient de caracteristicile culturale și religioase. Cron trimite notificări utilizatorului care deține intrarea la adresa de e-mail implicită ( [email protected]$nume gazdă). Dacă doriți să vă schimbați adresa de e-mail, adăugați „MAILTO=$email_address” la crontab. Dacă doriți să dezactivați această funcție, adăugați „>/dev/null 2>&1” la sfârșitul intrării.
Acum, dacă v-ați săturat deja de fereastra pop-up la fiecare cinci minute, rulați din nou crontab -e pentru a șterge sau, mai ușor, comentați intrarea. Pentru a vizualiza conținutul crontab, utilizați pur și simplu opțiunea -l (listă).

3.2. Privind la /etc/

3.2.1. scripturi cron

În secțiunile anterioare, am rezolvat probleme simple și banale, doar pentru încălzire, iar acum vom trece la lucruri serioase. Titlul acestei secțiuni se referă la directoarele din /etc care sunt responsabile pentru sarcinile periodice de întreținere a sistemului. De exemplu, în directorul /etc/cron.weekly, există un script man-db care actualizează baza de date a paginii de manual. Toate aceste scripturi sunt incluse în distribuție și rulează conform fișierului /etc/crontab. Prin urmare, dacă doriți să înțelegeți munca lor, cel mai bine este să studiați conținutul acestui fișier. Veți vedea intrări similare cu cele pe care le-am făcut mai devreme, dar comenzile executate vor fi diferite. „run-parts” este un mic utilitar conceput pentru a rula toate scripturile dintr-un director dat.
Cititorul atent poate observa că există un câmp în /etc/crontab pe care nu l-am văzut când ne-am editat crontab - acesta este câmpul „utilizator”. Acest lucru se face din motive de securitate. Dacă introduceți comanda crontab -e ca $user, înseamnă că orice comandă este rulată ca $user. Dar, deoarece /etc/crontab este la nivelul întregului sistem, este necesar să setați în mod explicit utilizatorul, deoarece poate fi necesar să rulați anumite scripturi sau programe ca alt utilizator decât root, mai ales dacă administratorul de sistem este conștient de securitate și adaugă utilizatori. și grupează în sistem după cum este necesar. Exemplu: backup nu are nevoie de toate privilegiile root, ci doar permisiuni de citire și scriere pentru anumite directoare, astfel încât administratorul creează un grup de backup și un utilizator backupadmin cu drepturile necesare și rulează scripturile de backup pe noapte folosind scrierea:

30 23 * * * backupadmin /home/backupadmin/nightlybkup.sh

Această intrare rulează scriptul nightlybkup.sh în fiecare seară la 23:30. Dacă vrem să rulăm copii de rezervă numai de luni până vineri, trebuie să ne edităm intrarea:

30 23 * * 1-5 backupadmin /home/backupadmin/nightlybkup.sh

Dacă doriți să executați backup numai luni, miercuri și vineri, înlocuiți „1-5” cu „1,3,5”. Odată ce știți exact de ce aveți nevoie, cron devine clar și ușor de utilizat.

4. Reflecții asupra securității

Există multe situații în care nu doriți ca un utilizator care are acces la sistemul dvs. să poată crea intrări crontab. Aici intră în joc /etc/cron.deny și /etc/cron.allow. Utilizarea lor este similară cu /etc/hosts.allow și /etc/hosts/deny, așa că dacă ați mai lucrat cu aceste fișiere înainte, vă veți simți ca acasă. Aceste două fișiere (cron.deny și cron.allow) nu sunt în sistem implicit, cel puțin în sistemul la care lucrăm, așa că în mod implicit toată lumea are permisiunea de a crea intrări crontab. Puteți verifica ce fișiere legate de cron sunt în directorul dvs. /etc cu comanda:

$ ls /etc | grep cron

Și din nou, vă reamintim că toate cele de mai sus sunt valabile pentru Linux, deoarece absența acestor fișiere pe Solaris înseamnă exact opusul, în plus, fișierele sunt localizate în alte locuri. Cron.allow este verificat mai întâi, așa că de obicei introducem „ALL” în cron.deny și apoi adăugăm utilizatorii cărora dorim să le acordăm acces în cron.allow.

5. Exemple de utilizare a cron

In fiecare minut:

* * * * * /usr/local/bin/check-disk-space.sh

Comanda va fi executată în fiecare minut, zi și lună.

Pe zile:

30 02 10 01,06,12 * /home/$user/bin/checkdrive.sh

Această comandă va rula scriptul checkdrive.sh la ora 02:30 în fiecare 10 ianuarie, iunie și decembrie.

La fiecare jumatate de ora:

00.30 * * * * /home/$user/backupdata.sh

Doar in weekend:

* * * * 6.7 /usr/bin/weekend

De doua ori pe zi:

20 11.16 * * * /usr/sbin/command

Comanda va fi executată în fiecare zi la 11:20 și 16:20.

În fiecare oră într-o anumită zi:

01 * 2 05 * /sbin/system_command

La fiecare 10 minute pe parcursul a cinci zile lucrătoare (luni - vineri):

*/10 * * * 1-5 /usr/local/bin/check-disk-space.sh

Doar în timpul programului de lucru:

00 09-17 * * 1-5 /usr/local/bin/check-disk-space.sh

Această comandă va fi executată o dată pe zi, între orele 9:00 și 17:00.

0 0 1 1 * /usr/local/bin/check-disk-space.sh

De două ori pe an la 12:00 și la 24:00

0 0,12 1 */6 * /usr/local/bin/check-disk-space.sh

Această comandă va fi executată de două ori pe an (la fiecare 6 luni) la 12:00 și la 24:00.

În fiecare a treia zi de joi a oricărei luni, la ora 10:00:

0 10 15-21 * 4 /usr/local/bin/check-disk-space.sh

În fiecare zi, la 20 de minute după fiecare oră pară:

20 0-23/2 * * * /usr/local/bin/check-disk-space.sh

Această comandă va fi executată în fiecare zi la 20 de minute după fiecare oră pară (0:20, 2:20...22:20).

6. Concluzie

Dacă la început ați crezut că intrările crontab sunt greu de înțeles și confuze, vă asigur că, folosindu-le constant, vă veți aminti foarte curând pe de rost ordinea și scopul tuturor câmpurilor, precum și numele și locația tuturor fișierelor. care trebuie editate. Este nevoie doar de practică.

Dacă ți-a plăcut acest articol, împărtășește-l prietenilor tăi:

, | |

Cron este una dintre cele mai comune modalități de a automatiza pornirea procesului în Linux astăzi. Cron este un demon care rulează în fundal și vă permite să programați și să automatizați lansarea diferitelor sarcini (inclusiv întreținerea serverului). Acest lucru se face folosind fișierul de configurare crontab.

Instalare Cron

În acest moment, aproape toate distribuțiile sunt livrate cu demonul cron deja instalat implicit. Dacă cron nu este instalat implicit, acesta poate fi instalat rapid cu următoarele comenzi:

Ubuntu/Debian:

sudo apt-get update
sudo apt-get install cron

CentOS/Red Hat Linux:

sudo yum update
sudo yum instalează vixie-cron crontabs

Odată ce instalarea este finalizată, asigurați-vă că cron rulează în fundal:

sudo /sbin/chkconfig crond activat
sudo /sbin/service crond start

Sintaxa de bază

Luați în considerare următorul exemplu de sarcină pe care doriți să o programați să ruleze:

5 * * * * curl http://www.google.com

Sintaxa pentru programarea diferitelor sarcini poate părea confuză la început. De fapt, este foarte scurt și simplu, trebuie doar să-ți dai seama cum să-l citești. Fiecare linie este împărțită într-un program și o comandă. Aproape orice comandă poate fi introdusă în linie. Programul este împărțit în 5 câmpuri diferite de planificare, în următoarea ordine:

<Минуты> <Часы> <Дни_месяца> <Месяцы> <Дни_недели>

exemple cron

Această secțiune conține exemple de programare a celor mai comune sarcini.

Pentru ca comanda să ruleze automat în fiecare minut:

Pentru a rula comanda la fiecare douăsprezece minute din oră (08.12, 09.12 etc.):

Pentru a face comanda să ruleze la fiecare 15 minute:

0,15,30,45 * * * *

Pentru a executa automat comanda în fiecare zi la ora 4:00:

Pentru a rula comanda în fiecare marți la ora 4:00:

Programul poate fi împărțit. Adică, în loc de 0,15,30,45 puteți folosi:

Acordați atenție intervalului 2-6. Această sintaxă va rula comanda specificată de la 2:00 la 6:00 la fiecare 15 minute.

După cum puteți vedea, sintaxa cron extrem de puternică și flexibilă vă permite să specificați aproape orice interval de timp.

Configurarea cron

Odată ce ați dezvoltat un program de activități, trebuie să îl plasați în locația corectă din sistem, astfel încât demonul să îl poată găsi și citi. În general, există mai multe astfel de puncte în sistem, dar, de regulă, un astfel de program este plasat în crontab-ul utilizatorului. După cum sa menționat deja, crontab este un fișier de configurare al demonului cron care conține o programare pentru rularea anumitor comenzi și programe. Acest fișier se află în /var/spool/cron/crontab, dar nu este obișnuit să îl editați direct. Pentru a adăuga programele necesare în fișier, utilizați comanda crontab cu același nume. Adică, pentru a edita fișierul crontab, puteți pur și simplu să tastați:

Această comandă va deschide un editor de text cu ajutorul căruia puteți face toate modificările necesare; fiecare sarcină nouă trebuie introdusă pe o linie nouă.

Pentru a vizualiza crontab fără a face modificări, utilizați comanda:

Puteți șterge crontab cu următoarea comandă:

Un utilizator superior poate edita crontabul altor utilizatori cu:

crontab -u<пользователь>-e

ieșire cron

După finalizarea jobului cron, acesta trimite rezultatul la adresa de e-mail a utilizatorului (cu excepția cazului în care rezultatul trebuie trimis în jurnal sau /dev/null). Adresa de e-mail poate fi specificată manual prin adăugarea parametrului MAILTO în partea de sus a crontabului. De asemenea, puteți specifica shell-ul de rulat, calea către binarul cron și directorul principal. Pentru asta:

primul crontab deschis:

apoi editați-l astfel:

SHELL=/bin/bash
ACASA=/
MAILTO=" [email protected] _user.com”
#Acesta este un comentariu
* * * * * echo „Rulează această comandă în fiecare minut”

Această linie va returna Rulați această comandă în fiecare minut. Daemonul cron va trimite această ieșire la e-mail [email protected] _user.com. Acest lucru, desigur, nu este foarte convenabil. După cum am menționat mai devreme, această ieșire poate fi trimisă într-un fișier jurnal pentru a evita astfel de situații.

Pentru a face acest lucru, trebuie doar să adăugați:

* * * * * echo ‘Rulează această comandă în fiecare minut’ >> file.log

Notă: simbolurile >> vor direcționa ieșirea către jurnal. Pe lângă înregistrare, puteți utiliza și /dev/null cu următorul script PHP care rulează în fundal.

* * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1

Restricționarea accesului la cron

Pentru a restricționa accesul la demonul cron, trebuie să utilizați fișierele /etc/cron.allow și /etc/cron.deny. pentru a permite (permite) sau interzice (interzice) accesul unui anumit utilizator, trebuie doar să introduceți numele utilizatorului în fișierul corespunzător. În mod implicit, demonul cron este disponibil pentru toți utilizatorii. Pentru a refuza accesul tuturor utilizatorilor și a acorda acces numai exemplului de utilizator, trebuie să utilizați următoarea secvență de comenzi.



Ți-a plăcut articolul? Împărtășește-l