Cum de a face cron să execute ordinele noastre

Ar fi minunat dacă FreeBSD va efectua în mod automat întreținerea și vă va raporta prin e-mail. Din fericire, grație daemonului cron și a scripturilor de servire, FreeBSD vă face acest lucru în mod regulat. În articolul de astăzi, vom discuta despre cum daemonul cron execută comenzi programate și să învețe cum să configurați cron pentru a rula scripturile și programele.







Ca majoritatea altor daemoni, cron rulează cu FreeBSD și apoi rulează liniștit în fundal. Pentru a vă dovedi că nu este nevoie să rulați singur cron, căutați cuvântul # xab; cron # xbb; în lista proceselor care rulează, de exemplu:

Ar trebui să obțineți ceva de genul:

În acest exemplu, cron are numărul 97 al procesului.

Ca rezultat, veți vedea următoarele linii:

Următorul tabel prezintă limitele valorilor valide ale argumentelor coloanelor care descriu timpul:

Ziua săptămânii (zi / săptămână)

0-7 (unde 0 și 7 sunt duminică) sau primele trei litere ale denumirii în limba engleză a zilei din săptămână (cazul nu este luat în considerare)

Valorile pot fi un număr, un nume de trei litere și un interval, de exemplu, o înregistrare # xab; 1-5 # xbb; în câmpul zilei de săptămână va însemna # xab; de luni până vineri # xbb;. Valorile pot fi separate prin virgule: # xab; 1,15,31 # xbb; în domeniul dayofmonth va executa comanda specificată în ziua 1, 15 și 31 din fiecare lună.

De asemenea, puteți utiliza valorile formularului # xab; * / numărul # xbb;. De exemplu # xab; * / 2 # xbb; în câmpul de luni va însemna # xab; executați la fiecare două luni # xbb;. În lista de sarcini a sistemului există un exemplu similar:

Această linie se citește astfel: rulați comanda / usr / libexec / atrun de la utilizatorul rădăcină dacă minutul curent este împărțit în cinci (sau la fiecare cinci minute), fiecare oră în fiecare zi a oricărei luni. Dacă nu știți ce face comanda atrun, tastați pe consola:

Ca răspuns, se va spune:

Ie comanda atrun pornește sarcini din coada de execuție în așteptare. Dacă curiozitatea dvs. nu este satisfăcută de o astfel de explicație, atunci uitați-vă la om 8 atrun.

Și masa finală, înainte de a contacta din nou / etc / crontab. Puteți înlocui toate cele cinci câmpuri de timp cu următoarele substituții:

Să revenim la prima consolă și să continuăm să citim / etc / crontab:

Ie newsyslog este conceput pentru a face gestionarea sistemului de jurnale de sistem.

Deci, citiți / etc / crontab următor:

Unde găsesc cron scripturi de serviciu? În cea de-a doua consolă, încercați să tastați:

Dacă învățați cum să scrieți scripturi pentru interpretul de comandă, examinarea scenariilor construite în sistem vă va oferi multe exemple de sintaxă corectă și comună.

Dacă aveți mai multe mesaje, atunci, printre altele, ar trebui să obțineți cel puțin unul, numit # xab; ieșire zilnică de difuzare # xbb; dacă citiți acest mesaj, veți vedea cât de mult lucrează cron pentru dvs. în fiecare seară la ora 1:59. Rețineți că mesajele de securitate sunt trimise printr-o scrisoare separată, numită #xab; ieșire de verificare a securității # xbb;. Acest mesaj este foarte util pentru citire, deoarece conține informații despre verificarea fișierelor care au atributul setuid, uid 0, utilizatorii fără parole, mesajele kernel-ului, încercările respinse de înregistrare în sistem și conexiunile respinse.







După citirea acestor mesaje pot fi eliminate în siguranță. După ce vă deconectați de la clientul de e-mail, nu uitați să renunțați la sesiunea superuser.

Până acum, am examinat fișierul de sistem crontab, care nu ar trebui să fie schimbat. Acum vom vedea cum să creați propriul fișier crontab, pentru a forța cron să execute comenzile noastre. În FreeBSD, în mod implicit, orice utilizator are dreptul de a crea propriul fișier crontab. Aceste fișiere sunt stocate în directorul / var / cron / tabs. Dacă tastați (de la utilizatorul rădăcină):

Dacă vreau să găsesc și să șterg fișiere cu anumite extensii, pot introduce o comandă similară (trebuie să o introduceți pe o singură linie):

Să vedem cum putem interpreta această frază obscură. În general, această echipă caută ceva. Expresiile de căutare arata întotdeauna ca:

Deci, când scriu găsiți /, îi spun comenzii de căutare să caute din rădăcina sistemului de fișiere.

Apoi spun că se va căuta fișiere al căror nume se termină în ".core" sau începe cu "mort". Întrucât, în final, vreau ca ambele tipuri de fișiere să fie șterse, le-am înconjurat cu paranteze. Am adaugat inaintea parantezelor de pe spate, pentru ca interpretul de comanda sa nu le ia in contul lor.

Atunci când găsește astfel de fișiere, va aplica comanda "rm -rf" specificată în parametrul "-exec". Ori de câte ori utilizați clauza "-exec" în găsire, trebuie să o terminați cu caracterele "\;", altfel nimic nu va funcționa. Parantezele curbate indică exec unde găsesc informațiile găsite prin căutare.

Să încercăm să ne dăm seama ce am scris aici. Toate scenariile încep cu acest lucru:

urmată de calea completă spre programul care va executa scriptul. Am creat un script pentru interpretul de comandă Bourne și am indicat că comanda sh (Bourne shell) ar interpreta acest script:

Înainte vine conținutul util al scenariului. Conține o propoziție #xab; dacă # xbb; începând cu un cuvânt cheie # xab; dacă # xbb; și se termină # xab; fi # xbb;. În prima linie a propoziției # xab; dacă # xbb; Se specifică o condiție care poate lua o valoare # xab; true # xbb; sau # xab; false # xbb;:

marca # xab ;! # xbb; este o operație de negare # xab; nu # xbb; care permite blocul # xab; dacă # xbb; Executați atunci când expresia în paranteze nu este adevărată. În esență, comanda ps este utilizată pentru a găsi procesul Netscape rulat pentru acest utilizator. În absența unui astfel de proces, scriptul continuă cu ieșirea șirului citat:

Înainte vine curățarea cache-ului Netscape, care se află în directorul de domiciliu al utilizatorului:

În cazul în care utilizatorul are un proces Netscape rulat, interpretul iese din bloc # xab; dacă # xbb ;, fără a executa clauza # xab; apoi # xbb;.

Salvați scenariul. Am salvat-o sub nume # xab; curățați # xbb;. Puteți numi scenariul așa cum doriți, dar nu ar trebui să-i numiți numele oricărei echipe existente. Pentru reasigurare, executați următoarea comandă pe a doua consolă:

Dacă obțineți un fel, atunci există o comandă cu acest nume și ar trebui să alegeți un nume diferit. Cu toate acestea, dacă rezultatul arată astfel:

apoi, cel mai probabil ați ales un nume bun pentru scenariul dvs.

După ce salvați scriptul, trebuie să setați atributul acestuia pentru fișierul executabil:

Este o idee bună să creați un subdirector de bin în directorul dvs. de acasă, în care veți stoca script-urile dvs.:

În cele din urmă, ar trebui să vă testați scenariul pentru performanță înainte de al da cron. În directorul bin, scrieți:

Dacă vă aflați într-un alt director, scrieți:

Dacă utilizați interpretul C-shell și primiți un mesaj #xab; Comanda nu a fost găsită # xbb; apoi tastați:

și reporniți scriptul.

Acum suntem gata să creăm un fișier crontab astfel încât cron să execute scriptul nostru, precum și comanda de căutare. Conectați-vă la sistem ca utilizator normal. Înregistrez sub genisis numele. Acum scrie:

Deoarece suntem în vi, apăsați #xab; ESC "urmat de caracter # xab; i # xbb; pentru a intra în modul de inserare, introduceți acest text:

(desigur, liniile 5 și 6 sunt de fapt o linie).

Când vă verificați mâine căsuța poștală, veți vedea două scrisori din cron cu rezultatele intrărilor de activități din fișierul dvs. crontab. Dacă comenzile dvs. au reușit, veți obține ceva similar:

Acum câteva remarci finale despre crontab. Dacă doriți să vedeți conținutul fișierului dvs. crontab, tastați:

Dacă doriți să modificați acest fișier, scrieți din nou crontab -e.

Numai rădăcina superuser are dreptul de a vedea care utilizatori au fișiere crontab instalate. Conectați-vă ca root și încercați să scrieți următoarele:

Va trebui să vedeți o intrare nouă cu numele de utilizator care tocmai a creat fișierul dvs. crontab.







Trimiteți-le prietenilor: