Sistemele Linux® și UNIX® vă permit să programați atât o singură dată și sarcinile recurente. În acest articol, preluat din manual examen LPI 102: Sarcini administrative (LPI examen 102 Prep: sarcini administrative). Ea arată cum să facă acest lucru.
Efectuați sarcini la intervale regulate
Efectuarea sarcinilor la intervale regulate, controlate de facilitatea cron. care constă din daemon crond și un set de tabele care descriu ceea ce este de lucru și cât de des ar trebui să fie făcut. Daemon se trezește în fiecare minut și verifică fișierul program (crontabs), pentru a determina ce trebuie făcut. Utilizatorii gestiona aceste fișiere folosind comanda crontab. proces daemon crond începe de obicei de inițializare (de inițializare) la pornirea sistemului.
Pentru simplificare, să presupunem că doriți să rulați în mod regulat comanda din listingul 1. spune doar data și ora, dar poate fi un exemplu pentru a înțelege modul de utilizare a crontab pentru a stabili sarcinile pentru cron, așa cum aflăm de la ieșire, atunci când a fost efectuate. Creați înregistrări în fișierul cu programul necesită o linie ascunse metacaractere shell software-ul, asa ca ar fi mai bine să o facă prin utilizarea de comenzi simple și parametri. În acest exemplu, comanda echo va rula script-uri de la /home/ian/mycrontab.sh care nu au nevoie de opțiuni. Astfel, nu potrebutsya silitor cu simboluri ascunse.
Listarea 1. Exemplu de comandă simplă
Crearea unui fișier de program
Fiecare înregistrare din fișierul program este format din șase domenii:
- minut
- oră
- zi a lunii
- lună
- zi a săptămânii
- Un șir care trebuie să fi rulat cu ajutorul sh
Minute și ore trebuie să fie în intervalul de la 0 la 59 și 0 până la 12, respectiv, în timp ce ziua de luni și luni - de la 1 la 31 și 1 până la 12, respectiv. Ziua săptămânii variază de la 0 la 6, unde 0 = duminică. Acesta poate fi, de asemenea, referire ca la soare, mon, tue, etc. Al șaselea câmp - asta e tot acolo este pentru a cincea și este interpretată ca un șir de caractere pentru a trece la sh. Semnul la sută (%) este transferat ca un top al liniei, deci, dacă doriți o% sau orice alt caracter special, a pus un backslash în fața lui (\). Șirul înainte de prima% transmisă în coajă moale, și tot după%, este în intrarea standard.
Diferitele domenii referitoare la timpul, poate avea anumite valoare, intervalul de valori, cum ar fi 0-10 sau lista de soare căsători, sau separate prin virgulă de valori unice sau intervale. Într-o anumită măsură, a creat în mod artificial un record în fișierul program pentru o echipa de exemplul nostru, s-ar putea arata ca exemplul din Listarea 2.
Listarea 2. Exemplu de fișier program simplu
Ce zici de ieșire?
S-ar putea întreba ce se întâmplă cu ieșirea comenzii. Majoritatea echipelor care lucrează cu funcția cron, direcționează ieșirea către jurnalul prin intermediul funcției syslog, care este discutat în tutorial LPI examen 102: Sarcini administrative (examen LPI 102 prep: sarcini administrative). Cu toate acestea, orice ieșire care este trimis la stdout, vor fi trimise prin poștă către utilizator. Listarea 3 arată ieșire pe care le poate primi de la exemplul nostru de comandă.
Listarea de ieșire 3. cron primite prin e-mail
Unde este dosarul meu program?
fișier Orarele (crontab), pe care l-ați creat cu comanda crontab. este stocat în / etc / spool / cron sub numele de utilizator pe care a creat-o. Astfel, dosar orare, care a fost discutat mai sus, este stocat în / etc / spool / cron / ian. Știind acest lucru, nu vei fi surprins de faptul că comanda crontab. ca passwd. este un SUID-program care rulează cu privilegii de root.
/ Etc / crontab
În plus față de programele de fișiere de utilizator în cron / var / spool / cron verifică / etc / crontab și fișierele din directorul /etc/cron.d. În aceste fișiere, programele de sistem au un alt câmp, între a cincea zi corespunzătoare a săptămânii, și echipa. Acesta identifică utilizatorul pentru care o echipă, ca regulă, acest utilizator - rădăcină. / Etc / crontab ar putea arăta ca în exemplul din Listarea 4.
Listarea 4. / etc / crontab
În acest exemplu, munca propriu-zisă se face prin comanda run-parts. care rulează script-uri de la /etc/cron.hourly, /etc/cron.daily etc.; / Etc / crontab controlează pur și simplu modul de timp a sarcinilor periodice. Vă rugăm să rețineți că toate comenzile sunt executate ca root. Rețineți, de asemenea, că fișierul de planificare poate conține cesionează variabilele shell, care vor fi instalate înainte de comenzi de funcționare.
Funcția Cron este bun pentru sistemele care rulează în mod continuu. În cazurile în care sistemul poate fi destul de mult timp liber, cum ar fi în laptop-uri, sarcinile de lansare planificate, care de obicei zilnic, săptămânal sau lunar oferă cron, poate îndeplini funcția de anacron (ceea ce înseamnă „cron anacronic“, „cron anacronic“). Anacron nu acceptă îndeplinirea sarcinilor pe oră.
Anacron păstrează fișiere timestamp în / var / spool / anacron, făcându-le înregistrează atunci când lucrarea se face. La controalele anacron start câte zile au trecut de la ultima sarcina de execuție, și-l execută, dacă este necesar. Tabel cu sarcini de fișier anacron stocate în / etc / anacrontab, formatul care diferă ușor de / etc / crontab. La fel ca și / etc / crontab, / etc / anacrontab poate cuprinde mediul de instalare. Fiecare loc de muncă corespunde la patru domenii:
Perioada - numărul de zile, dar se poate defini ca @monthly, sarcina care urmează să fie efectuată o singură dată pe lună, indiferent de numărul de zile acolo. Întârziere - câte minute trebuie să aștepte din momentul în care sarcina este gata pentru a rula, să-l rulați. Acest lucru este folosit pentru a evita problemele de curgere atunci când sistemul este pornit. identificator sarcină poate cuprinde orice caracter non-gol cu excepția slash (/).
Și / etc / crontab, și / etc / anacrontab modificată prin editarea directă. Nu este nevoie de a utiliza crontab de comandă. pentru a actualiza aceste fișiere sau fișiere într-un director /etc/cron.d.
Efectuați sarcina la un anumit moment
Poate fi necesar pentru a îndeplini o sarcină doar o singură dată, și fă-o în mod regulat. În acest scop, folosiți la comandă. Sarcinile care urmează să fie efectuate, citite dintr-un fișier specificat cu -f. sau de la stdin standard de intrare, cu excepția cazului -f nu este utilizat. pavilion -m trimite un e-mail utilizatorului, chiar dacă echipa nu are un standard de ieșire. Steagul -v afișează timpul când lucrarea va rula înainte de a citi lucrarea. Ora este afișată și în ieșire.
Listarea 5 prezintă un exemplu de scenariu mycrontest.sh de lucru. așa cum este utilizat anterior. Listarea 6 arată ieșirea care este trimis utilizatorului după începerea de locuri de muncă. Vă rugăm să rețineți că este oarecum mai compact decât cel care a trimis cron.
Listarea 5. Utilizând la comandă
Listarea 6. Sarcina de ieșire a început la comandă
Indicarea de timp poate fi destul de complexe. Listarea 7 prezintă câteva exemple. Mai multe informauiyu pot fi găsite pe pagina de om dedicată la comandă. în fișierul / usr / share / doc / at / timespec sau tip /usr/share/doc/at-3.1.10/timespec de fișier, în cazul în care corespunde versiunii 3.1.10 la pachet.
Listarea 7. Valorile timp cu cel de comandă
Pentru echipa de la există, de asemenea, opțiunea -q (coada - comanda). Creșterea valorii de prioritate crește frumos pentru a seta. Există, de asemenea, o comandă de lot. care este similar cu cel. cu excepția faptului că comenzile sunt rulate numai atunci când sistemul este suficient de mic încărcat. Detaliile acestor proprietăți sunt descrise în pagina de om.
Gestionați sarcinile programate
Listarea 8. locuri de muncă programate Afiseaza
Listarea 9. Utilizarea la -c cu un număr de locuri de muncă
Vă rugăm să rețineți că conținutul script-ul nostru a fost copiat un document încorporat, care va fi executat shell software-ul specificat în variabila SHELL sau / bin / sh, în cazul în care variabila SHELL nu este setat. În examen tutorial LPI 101 subiect 103: comenzile GNU și UNIX (LPI examen 101 Prep, Subiect 103: GNU și UNIX comenzi), puteți vizualiza documentele încorporate, dacă este necesar.
Ștergerea sarcinilor programate
Toate programate în sarcini cron cron pot fi îndepărtate cu comanda -r. așa cum se arată în exemplul 10.
Listarea 10. Afișarea și ștergerea de locuri de muncă cron
Pentru a șterge un cron sau sistem anacron sarcini, edita / etc / crontab, / etc / anacrontab sau edita sau șterge fișiere din /etc/cron.d.
Una sau mai multe sarcini programate folosind la. Puteți șterge o atrm echipă cu numărul de locuri de muncă. locuri de muncă multiple ar trebui să fie separate printr-un spațiu. Listarea 11 prezintă un exemplu.
Listarea 11. Afișarea și eliminarea locurilor de muncă cu ATQ și atrm
Configurați accesul utilizatorilor la Task Scheduler
Dacă fișierul există /etc/cron.allow, orice utilizator care nu este o rădăcină superutilizator, trebuie să fie specificate în ea, pentru a putea folosi crontab și cron. Dacă nu există un astfel de fișier, dar /etc/cron.deny, un utilizator care nu este un utilizator root, și a fost pe lista acestui fișier nu va fi capabil de a utiliza crontab sau facilitatea cron. În cazul în care nici unul, nici celălalt fișier, numai superuser are permisiunea de a utiliza această comandă. /etc/cron.deny fișier gol (și este gol implicit) permite tuturor utilizatorilor să lucreze cu funcția cron.
fișiere similare de la - /etc/at.allow și /etc/at.deny.
Aflați mai multe
Obțineți produse și tehnologii
- Dvs. proiect de dezvoltare viitoare pe Linux cu software-ul de încercare IBM a crea software-ul. disponibil pentru descărcare direct de la developerWorks.