Cum se configurează cron pe găzduire. Configurare cron ușoară pe Linux

Am auzit multe despre cum Linux are un programator de sarcini cron la îndemână. Totuși, nu aveam nevoie să-l folosesc și nu voiam să-i înțeleg setările... consola, multe litere în engleză... era înfricoșător. Dar, din fericire, temerile mele au fost în zadar - totul este simplu până la bază. Articolul va analiza cum să configurați execuția scripturilor dvs. într-un program și, ca exemplu, vom instala „cucul”.

În primul rând, puțin despre cum funcționează în general.

Când sistemul pornește, pornește demonul cron. Poate fi controlat (stop/start/verificare stare) cu comanda: sudo service cron (stop/start/status). Dar acest lucru este rareori necesar.

Daemonul cron însuși doarme de cele mai multe ori și își deschide ușor ochii o dată pe minut pentru a verifica locurile de muncă în acest moment. Dacă nu există sarcini, atunci intră din nou în hibernare.

Joburile sunt localizate în fișiere cu nume egale cu numele de utilizator, iar fișierele în sine sunt localizate în folderul /var/spool/cron/crontabs. Dosarul este protejat de interferențele externe și este accesibil numai superutilizatorului. Dar, fiecare utilizator poate configura un program pentru sarcinile sale fără a cunoaște parola root (superutilizator).

La configurați cron Pentru utilizator obișnuit doar tastați:

Dacă trebuie să creați o sarcină pentru un alt utilizator, lansați-o cu comanda:

sudo crontab -u user -e

În loc de utilizator scriem utilizatorul dorit, de exemplu root.
Când lansați prima dată va fi o întrebare despre editor... Îmi place nano. Este simplu și rulează fără GUI.


Sintaxa sarcinilor este foarte simplă. Să ne uităm la un exemplu dintr-o captură de ecran cu lansarea unui cuc:

0 */1 * * * /home/zegi/bin/kuku

Există 2 câmpuri principale în sarcină: 0 */1 * * * - indică ora la care va fi declanșată comanda. Iar /home/zegi/bin/kuku este calea către scriptul care descrie comanda (comenzile).

Nu ar trebui să fie probleme cu adresa scriptului (zegi este numele de utilizator... nu uitați să-l puneți pe al dvs.). Dar trebuie să explicăm cum să setăm timpul cron pentru execuția scriptului.

În total avem 5 celule de intrare, care sunt separate printr-un spațiu.
1 - minute (numerele de la 0 la 59)
2 - ore (de la 0 la 23)
3 - ziua lunii (de la 1 la 31)
4 - luna din an (de la 1 la 12... de exemplu februarie este 2)
5 - ziua săptămânii (de la 1 la 7. Se folosește săptămâna vestică, când începutul este duminica, adică Dum-1, Luni-2, Mar-3, Mier-4, Jo-5, Vin-6, Sat - 7).

Fiecare celulă trebuie completată. Dacă aveți nevoie ca comanda să fie executată în fiecare lună, atunci setați * în al 4-lea câmp. Același lucru este valabil și pentru celelalte domenii.

Să revenim la exemplul cucului, când scriptul rulează în fiecare oră. Pentru a seta frecvența se folosește / . De exemplu, dacă aveți nevoie ca sarcina să fie executată la fiecare 5 minute, luni, atunci setați:

Dacă aveți nevoie ca sarcina să fie executată în fiecare oră, atunci va trebui să setați un anumit minut. Dacă lăsați un asterisc (* */1 * * *), atunci coroana se va executa în fiecare minut - pentru că sunt îndeplinite condițiile: a verificat toate cele 5 celule și valoarea lor corespunde timpului curent (minute - nu contează Ore - la fiecare oră, și nu doar anumite).
Bara oblică trebuie să fie întotdeauna precedată de un asterisc. De exemplu, alocarea execuției în fiecare minut începând cu data de 30 prin introducerea 30/1 nu va funcționa.

Dacă este necesar ca sarcina să fie efectuată nu ciclic, ci de mai multe ori, atunci valorile sunt scrise separate prin virgule.
De exemplu, trebuie să finalizați o sarcină în zilele lucrătoare la 12:00 și 18:00. Apoi va arăta astfel:

* 12,18 * * 2,3,4,5,6

Când ați terminat de editat sarcinile, nu uitați să salvați modificările (Ctrl+O > enter), apoi puteți ieși (Ctrl+x).

Cron ar trebui să anunțe că a apărut sarcina nouași este gata să-l execute, scriind: „crontab: instaling new crontab”.

Puteți vizualiza sarcinile create (poate că nu ați făcut nimic pentru dvs., dar administratorul de rețea a configurat ceva pentru dvs.) cu comanda:

Și până la urmă eu însumi script de cuc, care cuc în fiecare oră:

#!/bin/bash
h=`data +%l`
în timp ce [ $h -gt 0 ]
do
joacă ~/kukushka.wav
h=$[$h-1]
Terminat

Puteți descărca sunetul cucului cu comanda:

wget http://dl.dropbox.com/u/24844052/tuksik/kukushka.wav

Jocul este inclus în pachetul sox. În ubuntu îl puteți instala cu comanda.

În materialele noastre dedicate Ubuntu Server Din când în când, se pune problema îndeplinirii anumitor sarcini într-un program. Pentru a nu explica de fiecare dată același lucru, am decis să creăm acest material, care ar trebui să ajute administratorii de sistem stăpâniți și utilizați eficient programatorul de activități în Linux.

În Ubuntu Server, este folosit ca programator de sarcini cron- planificator cu interfata Linie de comanda. El este parte importantă sistem și începe să funcționeze imediat după instalare, efectuând diverse sarcini de sistem. Scopul nostru este să ne punem la dispoziție, mai ales că nu este atât de dificil pe cât pare.

Există două tipuri de programe cron: utilizator și sistem. Ele diferă prin faptul că primul este creat de utilizatori și executat ținând cont de drepturile utilizatorului, al doilea este folosit în administrare sau scopurile sistemuluiși poate fi rulat ca orice utilizator.

Pentru a crea sau modifica un program personalizat, introduceți comanda:

Crontab -e

Când îl lansați pentru prima dată, utilitarul vă va solicita să selectați un editor; vă recomandăm să alegeți mcedit(necesită mc instalat) sau alt editor cu care știți să lucrați.

Formatul orarului este:

minut oră zi luna comanda ziua_a_săptămânii

  • Minut- timp în minute de la 0 la 59
  • Ora- de la 0 la 23
  • Zi- ziua lunii de la 1 la 31
  • Lună- de la 1 la 12 sau denumiri de litere jan-dec
  • Zi a săptămânii- de la 0 la 6 (0 - duminica) sau sat - soare
  • Echipă- un șir în formatul interpretorului de comenzi care va fi executat, scriind like echipa1 && echipa2 pentru a rula mai multe comenzi la rând.

Valorile minutelor, orei, zilelor pot fi specificate după cum urmează:

  • Sens- un număr care indică o dată sau o oră, este permis un wildcard * permițând o gamă completă de valori
  • Valori multiple- este permisă specificarea mai multor valori separate prin virgule, de exemplu 2,14,22
  • Gama de valori- indicat cu o cratimă, de exemplu 2-10
  • Pasul valoric- indicat printr-o fracție, al cărei numitor este un pas, de exemplu */3 - fiecare a treia valoare 0, 3, 6, 9 etc. Numătorul trebuie să fie un interval de valori sau un asterisc.

Luați în considerare următorul exemplu de intrare:

0 8-19/2 * * 1 /home/ivanov/test

Înseamnă că la fiecare două oră de la 8 la 19 (8, 10,12,14,16) în zilele de luni, rulați scriptul de testare în directorul principal al lui Ivanov.

Dorim să vă avertizăm imediat împotriva unei greșeli frecvente: atunci când indică execuția periodică, toate datele trebuie indicate în mod explicit, asteriscul indică întreaga gamă de valori și nu absența acestora. De exemplu, dacă trebuie să executați un anumit script la fiecare oră de la 10 la 15, ar fi incorect:

* 10-15 * * * /home/ivanov/test

Această linie va rula scriptul in fiecare minutîn intervalul de la 10 la 15 ore. Va fi corect:

0 10-15 * * * /home/ivanov/test

Această intrare va permite scriptului să ruleze la începutul fiecărei ore din intervalul specificat.

Pe lângă dată, puteți utiliza o serie de șiruri speciale:

  • @reboot- executați comanda la repornire
  • @anual sau @anual- executați la 1 ianuarie, similar cu intrarea: " 0 0 1 1 * "
  • @lunar- efectuați pe 1 a fiecărei luni, similar cu " 0 0 1 * * "
  • @săptămânal- efectuează în fiecare duminică, echivalent cu " 0 0 * * 0 "
  • @zilnic sau @miezul nopţii- în fiecare zi la miezul nopții" 0 0 * * * "
  • @la oră- o dată pe oră, " 0 * * * * "

Deci, pentru execuția zilnică a scriptului nostru în fiecare miezul nopții, puteți scrie:

@midnight /home/ivanov/test

După ce ați finalizat crearea programului, salvați fișierul și ieșiți din editor. Programul personalizat va fi salvat în /var/spool/cron/crontabs sub nume utilizator curent.

Este furnizat un fișier pentru sarcinile de sistem și administrative /etc/crontab sintaxa intrărilor din acesta diferă prin prezență valoare suplimentară- utilizatorul în numele căruia va fi lansată sarcina:

minut oră zi luna ziua_a_săptămânii comanda utilizatorului

Un exemplu de astfel de intrare:

0 19 * * 1-5 root /etc/backup

Potrivit căreia la ora 19:00 de luni până vineri va fi lansat scenariul /etc/backupîn numele utilizatorului rădăcină.

Acest fișier conține, de asemenea, programe de sistem, așa că editarea acestuia trebuie făcută cu precauție. Toate sarcinile de sistem și administrative ar trebui plasate acolo.

După cum vedem cron Este destul de ușor de utilizat, dar în același timp oferă oportunități bogate pentru configurarea programelor în Ubuntu Server. Sperăm că acest articol va ajuta administratorii să stăpânească acest instrument.

Cron (coroană), Crontab (crontab), Gestionar de sarcini- toți cei implicați în „construcția șantierului” au auzit aceste nume de mai multe ori. Deci, ce este Cron? Cum să lucrezi cu el? De ce aveți nevoie de Cron și cum să îl configurați corect? Vom analiza toate aceste întrebări astăzi.

Primul lucru pe care vreau să-l remarc imediat: Cron, Crontab, Gestionar de sarcini- este tot același lucru, nu vă încurcați de varietatea denumirilor.

Î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 anumită sarcină timp specificat, si asta e. Apoi totul se întâmplă fără participarea ta - automat și cel mai bine, la momentul de care ai nevoie.

De exemplu, trebuie să trimiteți periodic notificări partenerilor dvs e-mail. Sau doriți să setați salutări sau mementouri automate. Sau ai un director de site-uri și vrei frecventa specificata a verificat scriptul directorului backlink-uri etc. Toate aceste sarcini pot fi automatizate cu ușurință, încredințându-le lui Cron sau, după cum se spune și ei - Planificator de sarcini. Și există scenarii în care operatie normala Cron este o necesitate.

Aproape toți furnizorii moderni de găzduire oferă deja 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 în zilele noastre nu mai este un lux, 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 avea alte funcții importante.

Deci, să ne uităm la tot actiuni practice folosind setarea Cron folosind exemplul rusesc cPane l (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: pachet complet toate cele mai multe servicii posibile pentru un pret foarte rezonabil.

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

Accesați panoul de control al site-ului, în în acest caz, Acesta este cPanel (sunt altele). Accesul vă este oferit 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. Acest meniu este uneori numit Panoul Cron. Iată cum este caracterizat Cron:

„Planificatorul de sarcini vă permite să rulați comenzi la o oră specificată fără participarea dvs. Acest lucru vă permite să automatizați munca periodică periodică. 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 , puteți spune programatorului să șteargă fișiere temporareîn fiecare săptămână, astfel încât să nu ocupe prea mult spațiu pe disc.”

Există două opțiuni pentru gestionarea bolii Crohn din care să alegeți:

Standard și Avansat (stil Unix), să ne uităm la fiecare dintre ele.

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

După cum puteți vedea, totul este foarte simplu aici. Trebuie doar să setați timpul de execuție a comenzii indicând în câmpurile corespunzătoare când va rula comanda și la ce oră: minute, Ora, Zi, Lună, Zi a săptămânii. Și, desigur, introduceț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țile din dreapta).

Să ne dăm seama ce am scris aici. Și noi 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ă instalarea sarcinii, faceți clic pe butonul Adăugați o nouă lucrare Cron.

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

A doua varianta. Faceți clic pe butonul Avansat (stil Unix), se deschide fereastra de instalare a activității:

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

Aici, la fel ca în primul caz, trebuie să indicaț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 a fost stabilită. Pagina este în curs de actualizare:

Și puteți adăuga o sarcină nouă 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 specificați: 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, Kron vă va informa despre asta într-o scrisoare, iar dacă scrisoarea ajunge 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 1, 3, 5, 7 zile ale săptămânii.

În câmpul de selecție: minute indicați minutul (sau minutele) la care sarcina va fi lansată pe teren Ora indicați ora (sau orele) la care va fi executată sarcina, precum și ziua(le) și luna(le), î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), aceasta î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 va fi lansată la 11, 14 și 18 minute. Puteți folosi și semnul * (asterisc)- denotă fiecare. Daca pui * (asterisc)în câmpul Minute, apoi sarcina va fi lansată în fiecare minut, adică. de 60 de ori pe oră.

În fiecare câmp puteți specifica atât o anumită oră, cât și un interval și, de asemenea, puteți utiliza asteriscuri.

Record */2 mijloace: 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, chiar și în fiecare minut pe tot parcursul anului. Desigur, o astfel de nevoie nu apare aproape niciodată, dar teoretic există o astfel de posibilitate.

Și, de asemenea, rețineți că unele site-uri de găzduire impun restricții privind rularea Crohn, de exemplu, nu mai mult de 3 - 10 ori pe oră. De ce? Acest lucru creează o încărcare destul de vizibilă pe server. Pentru încălcare, contul dvs. poate fi blocat.

Acum să ne dăm seama cum este completat câmpul Comanda pentru a rula(în prima opțiune) sau Command (în a doua opțiune).

Sarcina este specificată după cum urmează.

În primul rând, indicați calea către PHP pe serverul dvs., pe serverul meu calea este /usr/bin/php, a dvs. poate fi diferită, verificați cu administratorii serverului dvs., 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 și comanda completă pentru a rula fișierul mail.php va arăta astfel:

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

Pe diferite site-uri de găzduire, calea către PHP poate fi diferită și scrisă diferit, Dosarul rădăcină locația site-ului nu este întotdeauna cazul public_html, deci dacă nu exemplu concretînregistrările sarcinii pentru Crohn, este mai bine să întrebați administratorul despre acest lucru, descriind ceea ce doriți să obțineți ca rezultat. bun

Foarte des, pe sisteme asemănătoare Linux, poate fi necesar să automatizați unele 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 lui în anumite momente. Procesul de implementare în sine se bazează pe verificarea tabelelor coroanei și pe compararea acestora cu și timpul.

fișier crontab

Cel mai important element al înființării Cron este Fișier de configurare crontab. Conține comenzi de execuție și căi către scripturi. Toate rulează ca superutilizator. Deoarece sunt localizate în directorul /etc/cron.d, aceste fișiere ar trebui să fie configurate acolo.

Pentru fiecare utilizator individual Sistemul folosește propriul fișier crontab.

Diferite distribuții Linux folosesc directoare diferite pentru stocare setari personalizate. 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. Ele trebuie utilizate împreună cu crontab. Iată o mică listă:

  • -u nume de utilizator. Setează utilizatorul ale cărui sarcini și setări vor fi procesate actiunile urmatoare. Dacă omiteți cheia dată, 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 specificarea comenzilor în dosar special. Arată ca simpla intrare, format din șase coloane:

  • primul indică numărul de minute. Intervalul disponibil este de la 0 la 59. Puteți utiliza mai multe valori, interval și Simboluri speciale;
  • a doua coloană - ore. Pot fi utilizate valori de la 0 la 23;
  • ziua urmatoare. Aici puteți specifica un număr de la 1 la 31;
  • a patra este o lună. Valoarea minima 1, maxim - 12;
  • a cincea - săptămână. 0 sau 7 corespunde duminicii;
  • Ultima comandă este comanda în sine.

După cum sa menționat, puteți specifica caractere speciale, „*” sau „/” în fișier. De exemplu, o astfel de intrare este 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 linie goală, altfel ultimul paragraf poate fi ignorat, iar uneori întregul fișier;
  • fișierele aflate în directoare cu un punct în numele lor vor fi, de asemenea, ignorate de planificator;
  • Puteți utiliza simbolurile lire sterline „#” î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, îl puteți utiliza în comenzi sensuri speciale si reduceri. De exemplu, puteți utiliza următoarea listă pentru a specifica ziua săptămânii:

  • soare - duminica;
  • mon - luni;
  • marţi - marţi;
  • miercuri - mediu;
  • 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 porniți computerul;
  • @anual. Aceasta sarcina va fi lansat o dată pe an. Notația sa echivalentă în formă numerică ar putea fi: 0 0 1 1 *. Sinonimul său poate fi scris și ca @anual;
  • @lunar. După cum puteți ghici din nume, această variabilă rulează comanda o dată pe lună. Analogul 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ă. În fiecare oră.

Configurarea Cron pe Centos 7

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

Câteva exemple utile pentru crearea sarcinilor repetate frecvent

Cron poate fi configurat pentru a acoperi aproape toate nevoile oricărui utilizator.

  • 00 09-17 * * 1 - 5 /cale/ către echipă/ coroană. Această comandă va efectua automat acțiunea programată în fiecare zi lucrătoare de la 9 la 5 la fiecare prim minut;
  • 00 9.17 * * * /cale/ către echipă/ coroană. În acest exemplu, comanda este executată de două ori pe zi. Primul este la 9, al doilea este 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 fi lansat în fiecare zi.

MIN HOUR DOM LUN DOW CMD

Tabel: câmpuri Crontab și intervale valide (sintaxa Linux Crontab)

1. Programarea sarcinilor pentru un anumit timp

Baza utilizării cron este efectuarea sarcinilor în anumit timp așa cum se arată mai jos. Acesta va rula un script de backup complet pe 10 iunie, la ora 8:30.

Vă rugăm să rețineți că câmpul oră folosește un format de 24 de ore, deci 8 AM este 8, 20 PM este 20 de ore.

30 08 10 06 * /home/developer/full-backup

  • Minutul 30 – 30
  • 08 – 08 AM
  • 10 – a 10-a zi
  • * - În fiecare zi a săptămânii

2. Programați sarcinile pentru a fi îndeplinite mai frecvent (de exemplu, de două ori pe zi)

Următorul script folosește suplimentar backup de două ori pe zi în fiecare zi. Acest exemplu realizează backup incremental la 11:00 și 16:00 în fiecare zi. Valorile separate prin virgulă din câmp indică faptul că comanda trebuie executată la fiecare moment specificat.

00 11.16 * * * /home/developer/bin/incremental-backup

00 – al 0-lea minut (începutul orei) 11, 16 – 11 și 16 ore * - în fiecare zi * - în fiecare lună * - în fiecare zi a săptămânii

3. Programează munca pentru un anumit interval de timp (de exemplu, numai în zilele lucrătoare)

Dacă doriți ca rutinele să ruleze în fiecare oră la un interval de timp specific, utilizați următoarele.

Rutina Cron pentru fiecare zi în timpul programului de lucru

Acest exemplu verifică starea bazei de date în fiecare zi (inclusiv în weekend) în timpul programului de lucru de la 9:00 la 18:00.

00 09-18 * * * /home/developer/bin/check-db-status

00 - minutul 0 (începutul orei) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (ore) * - în fiecare zi * - în fiecare lună * - în fiecare zi săptămână

Rutina Cron pentru fiecare zi de lucru în timpul programului de lucru

Acest exemplu verifică starea bazei de date în fiecare zi a săptămânii (cu excepția sâmbătă și duminică) de la 9:00 la 18:00.

00 09-18 * * 1-5 /home/ramesh/bin/check-db-status

00 - al 0-lea minut (începutul orei) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (ore) * - în fiecare zi * - în fiecare lună 1-5 - luni, Marți, Miercuri, Joi și Vineri (în fiecare săptămână)

4. Cum să vizualizați intrările Crontab?

Vizualizați fișierele Crontab curente ale utilizatorului.

Pentru a vizualiza fișierele crontab-l de sus cont unix, faceți următoarele.

Developer@dev-db$ crontab -l @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space

Vizualizați intrările crontab rădăcină

Conectați-vă ca utilizator root (su - root) și rulați crontab-l așa cum se arată mai jos.

Root@dev-db# crontab -l nu există crontab pentru root

Pentru a vedea fișierele altor utilizatori, conectați-vă ca root și utilizați -u (nume utilizator) -l așa cum se arată mai jos.

Root@dev-db# crontab -u username -l @monthly /home/username/monthly-backup 00 09-18 * * * /home/username/check-db-status

5. Cum se editează intrările crontab?

Editarea intrărilor cron ale utilizatorului curent.

Pentru a edita intrările, utilizați cronab -e așa cum se arată mai jos. În mod implicit, intrările crontab curente ale utilizatorului vor fi editate.

Dezvoltator@dev-db$ crontab -e @yearly /home/developer/centos/bin/annual-maintenance */10 * * * * /home/developer/debian/bin/check-disk-space ~ "/tmp/crontab .XXXXyjWkHw" 2L, 83C

Când salvați fișierul, acesta va salva crontab-ul și va afișa următorul mesaj care vă va spune că crontab-ul a fost modificat cu succes.

~ „crontab.XXXXyjWkHw” 2L, 83C scris crontab: instalarea noului crontab

Editarea intrărilor rădăcină crontab

Conectați-vă ca utilizator root(su - root) și faceți crontab -e așa cum se arată mai jos.

Root@dev-db# crontab -e

Editarea intrărilor crontab ale altui utilizator

Pentru a edita intrarea crontab a altuia utilizator Linux, conectați-vă ca root și utilizați -u (nume de utilizator) -e așa cum se arată mai jos.

Root@dev-db# crontab -u username -e @monthly /home/username/fedora/bin/monthly-backup 00 09-18 * * * /home/username/ubuntu/bin/check-db-status ~ ~ ~ „/tmp/crontab.XXXXyjWkHw” 2L, 83C

6. Execuția Cron în fiecare minut

În mod ideal, s-ar putea să nu fie nevoie să programați o rulare cron în fiecare minut. Dar înțelegerea acestui exemplu vă va ajuta să înțelegeți celelalte exemple descrise în acest articol.

Bash * * * * * CMD

* - înseamnă o unitate posibilă - adică fiecare minut din fiecare oră de-a lungul anului. De asemenea, folosirea * direct va fi mai mult functie utilaîn exemplele următoare.

Specificarea */5 în câmpul minute înseamnă fiecare 5 minute. Specificarea 0-10/2 în câmpul minutelor înseamnă la fiecare 2 minute pentru primele 10 minute. Astfel, această convenție poate fi utilizată în toate cele 4 domenii.

7. Rulați sarcini Cron în fundal la fiecare 10 minute

Utilizați următoarele dacă doriți să vă verificați spațiul pe disc la fiecare 10 minute.

*/10 * * * * /home/ramesh/check-disk-space

Această sarcină rulează comanda de verificare a discului specificată la fiecare 10 minute timp de un an. Dar poate fi necesar să efectuați verificarea doar în timpul programului de lucru sau invers. Exemplele de mai sus arată cum se face acest lucru.

În loc să specificăm valorile în cele 5 câmpuri, le putem specifica folosind cuvânt cheie așa cum se arată mai jos.

Exista conditii speciale, când în loc de 5 câmpuri puteți folosi @ și apoi un cuvânt cheie - cum ar fi repornire, miezul nopții, anual, oră.

Cron cuvinte cheie speciale și semnificația lor

8. Programează munca pentru primul minut al fiecărui an folosind @yearly

Dacă doriți ca jobul cron să ruleze în primele minute ale fiecărui an, puteți utiliza cuvântul cheie @yearly așa cum se arată mai jos. În acest caz, sistemul va funcționa anual întreținere, folosind scriptul de întreținere anuală la ora 00:00 pe 1 ianuarie a fiecărui an.

@yearly /home/developer/red-hat/bin/annual-maintenance

9. Rulați sarcini în fiecare lună folosind cuvântul cheie @monthly

Este similar cu @yearly de mai sus. Dar comanda este executată lunar. Comanda va efectua backup-ul la ora 00:00 pe prima zi a fiecărei luni.

@monthly /home/ramesh/suse/bin/tape-backup

10. Rulați sarcini în fiecare zi folosind @daily

Utilizarea cuvântului cheie @daily va crea un fișier jurnal zilnic pentru a șterge jurnalul la ora 00:00 în fiecare zi.

@daily /home/developer/arch-linux/bin/cleanup-logs „ziua a început”

11. Cum să rulați comanda Linux după fiecare repornire folosind @reboot?

Utilizarea cuvântului cheie @reboot se va executa comanda specificată de fiecare dată după pornirea sistemului.

@rebootCMD

13. 12. Cum să dezactivez/redirecționez e-mailurile trimise Crontab folosind cuvântul cheie MAIL?

În mod implicit, crontab trimite rezultatul sarcinilor utilizatorului care a instalat sarcina. Dacă doriți să le redirecționați către un alt utilizator, adăugați sau actualizați variabila MAIL în crontab, așa cum se arată mai jos.

Developer@dev-db$ crontab -l MAIL="dezvoltator" @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space

Dacă doriți să împiedicați deloc trimiterea e-mailurilor, adică opriți trimiterea fișierelor de ieșire crontab, adăugați sau actualizați variabila MAIL în crontab, așa cum se arată mai jos.

13. Cum să rulați joburi Linux Cron în fiecare secundă folosind Crontab

Nu poți seta cron să ruleze în fiecare secundă. Deoarece unitate minimă execuție cron – minut. Într-un scenariu normal, nu este nevoie să rulați o execuție cron în fiecare secundă.

14. Specificarea variabilei PATH în Crontab

În toate exemplele de mai sus am indicat cale absolută comenzi Linux sau scriptul shell care urmează să fie executat.

De exemplu, în loc să specificați /home/developer/tape-backup , dacă doriți să specificați doar tape-backup , adăugați calea /home/developer la variabila PATHîn crontab, așa cum se arată mai jos.

Developer@dev-db$ crontab -l PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/developer @yearly annual-maintenance */10 * * * * check-disk-space

15. Instalarea Crontab dintr-un fișier Cron

În loc de editare directă fișier crontab puteți adăuga toate intrările în fișierul cron. Dacă fișierul are aceste intrări, le puteți descărca sau instala în cron, așa cum se arată mai jos.

Notă: Acest lucru va crea un fișier cron-file.txt în crontab, care va elimina intrările cron anterioare. Deci, vă rugăm să fiți atenți când încărcați intrări cron din cron-file.txt:

developer@dev-db$ crontab -l nu crontab pentru dezvoltator $ cat cron-file.txt @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space developer@dev -db$ crontab cron-file.txt developer@dev-db$ crontab -l @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space