Dacă daemonul nu rulează, îl puteți executa ca orice alt daemon cu comanda start /etc/init.d/cron. executate în numele administratorului.
Daemonul cron funcționează într-un mod per minut. Adică, puteți seta timpul de execuție a unei sarcini într-un minut. Fișierul de configurare principal al daemonului cron este / etc / crontab. Partea principală a fișierului este un tabel cu 7 coloane, fiecare rând care descrie o lucrare. Fișiere care descriu sarcinile pentru daemonul cron. numite adesea fișiere crontab.
Exemplu de fișier / etc / crontab:
# m h dom mon dow comandă utilizator
17 * * * * root cd / run-parts -report /etc/cron.hourly
25 6 * * * test root -x / usr / sbin / anacron || (cd / run-parts -report /etc/cron.daily)
47 6 * 7 test radacina -x / usr / sbin / anacron || (cd / run-parts -report /etc/cron.weekly)
52 6 1 * * test rădăcină -x / usr / sbin / anacron || (cd / run-parts -report /etc/cron.monthly)
Fiecare linie are valorile a 7 câmpuri:
m - minute - minut - la ce minut să îndeplinească sarcina; intervalul de valori este (0-59)
h - oră - oră - în ce oră să se efectueze sarcina; interval de valori (0-23)
dom - ziua lunii - ziua lunii - în care zile ale lunii pentru a îndeplini sarcina; interval de valori (1-31)
lunar - lună - în care luni ale anului pentru îndeplinirea sarcinii; interval de valori (1-12)
dow - zi din săptămână - ziua săptămânii - care zile ale săptămânii pentru a îndeplini sarcina; intervalul de valori (0-7, 0 și 7 este duminică, următorul în ordine)
numele utilizatorului - utilizatorul în numele căruia va fi executat sarcina
comanda - o comandă executabilă - o comandă care va fi lansată la ora specificată.
În primele cinci câmpuri, puteți specifica nu numai numărul din interval, ci și domeniul de numere, enumerarea numerelor, intervalul în incremente. Simbol * înseamnă orice valoare. Citiți mai multe despre valorile din man 5 crontab. Vom lua în considerare mai multe exemple.
Fiți atent cu câmpurile 3 și 5 - ziua lunii și ziua săptămânii. Dacă există numere în ambele câmpuri, de exemplu, * 6 5 * 1 root myscript. apoi înregistrarea înseamnă să executați sarcina la ora șase pe data de 5 a fiecărei luni sau în fiecare zi de luni, dar nu în fiecare lună a 5-a.
fișierele crontab pot fi găsite și în directorul /etc/cron.d/. care este văzut de către daemonul cron în procesul de lucru. Ele pot avea nume arbitrare, dar structura ar trebui să fie aceeași ca și fișierul / etc / crontab. În mod obișnuit, acest director stochează sarcinile diferitelor servicii și programe (fișierele sunt apoi denumite după numele serviciilor sau programelor).
29 12 * * * atingeți testfile
În primul câmp secundar, specificați ora curentă pentru dvs. (cu câteva minute mai lungă decât cea curentă) și salvați fișierul. Apoi, verificați după ora indicată, directorul rădăcină al testului utilizatorului și verificați dacă fișierul a fost creat:
Astăzi vom vorbi despre procesele Linux. care sunt numiți - demoni. și, de asemenea, să vedem cum sunt gestionate daemoanele (sau serviciile, dacă desenați o paralelă cu Windows). Principala diferență dintre procesul demonic și procesul normal al utilizatorului este că daemonul nu are un terminal de control și, în consecință, utilizatorul poate interacționa cu acesta numai prin alte programe sau scripturi de control. Deci, în cel mai simplu caz, un daemon este un fișier executabil sau un script care rulează în fundal. Foarte des, astfel de fișiere se termină cu litera d (de la daemon): sshd, httpd, cupsd - deși acest lucru nu este necesar.
Pentru a controla daemonul, există un script de control pentru fiecare daemon. Aceste scripturi sunt localizate, de regulă, în directorul /etc/init.d/. Aceste scripturi sunt folosite de la daemon în sine (numai fără litere d la sfârșit), deși aceasta nu este o regulă de neclintit. De exemplu, scriptul /etc/init.d/ssh controlează daemoanele shd. care este localizat în directorul / usr / sbin /.
Ce se înțelege prin rularea unui demon? Este abilitatea de a efectua anumite operații, cum ar fi pornirea unui daemon, oprirea, repornirea, forțarea opririi și repornirea și altele. Prin urmare, lansând scriptul de control, trebuie să îi trimitem un parametru care descrie acțiunea efectuată cu daemonul. Acești parametri sunt definiți strict și principalele și cele mai frecvent întâlnite sunt:
începeți - porniți daemonul
opriți - opriți daemonul
reporniți - reporniți daemonul
reload - reîncărcați (re-citiți fișierele de configurare) parametrii daemon
force-reload - repornirea forțată a parametrilor daemonului
Dacă scrieți singur acest script de control, trebuie să vă amintiți că trebuie să se ocupe de cel puțin doi parametri: începeți și opriți. Puteți deschide orice script din directorul /etc/init.d/ și puteți vedea modul în care manipularea parametrilor de control este implementată prin construcția cazului.
Deci, să încercăm să oprim și să pornim daemonul cron. Pentru aceasta, directorul /etc/init.d/ conține scriptul de control /etc/init.d/cron:
debian: / home / igor # /etc/init.d/cron
Utilizare: /etc/init.d/cron.
debian: / home / igor # /etc/init.d/cron stop
Oprirea planificatorului de comenzi periodice: crond.
debian: / home / igor # ps ax grep [c] ron
debian: / home / igor # /etc/init.d/cron începe
Pornirea planificatorului de comenzi periodice: crond.
debian: / home / igor # ps ax grep [c] ron
6524. Ss 0:00 / usr / sbin / cron
Dacă îl rulați fără parametri (linia 1), veți vedea un indiciu despre parametrii pe care trebuie să îi transmiteți acestui script (linia 2). Încercăm să fugăm cu parametrul stop (linia 3) și să verificăm oprirea daemonului (linia 5). Apoi rulați daemonul (linia 6) și verificați (linia 8). În același mod, și alte demoni de control.
Să ne uităm acum la modul în care pornesc daemoanele când sistemul de operare Linux se învârte și când se oprește. Așa cum trebuie să vă amintiți în Linux, există un lucru de genul runlevel - nivelul de pornire a sistemului. La fiecare nivel de pornire a sistemului, se execută un număr clar de daemoni. Când treceți de la un nivel la altul, sunt pornite daemoanele care nu trebuie să funcționeze - și care ar trebui să funcționeze. Pentru a spune sistemului care daemoane la care nivel de start ar trebui să înceapă sau să se oprească în diferite distribuții, există utilități special concepute pentru acest lucru. Dar ne uităm acum la mecanismul sistemului de lansare demonic pentru a înțelege esența lui.
În directorul / etc există directoare numite rcN.d. unde N este un caracter care indică nivelul de execuție la care face parte directorul. Asta este, avem următoarele cataloage: rc0.d, rc1.d, rc2.d, rc3.d, rc4.d, rc5.d, rc6.d și rcS.d. Dacă te uiți la conținutul de directoare, veți vedea că ele conțin legături simbolice către script-uri în directorul / etc / init.d /:
Link-uri simbolice sunt denumiți în conformitate cu următoarea regulă: în primul rând există o mare latină litera S sau K. apoi numărul din două cifre și apoi script-ul de denumire curentă care face referire la link-ul simbolic. Litera K din numele linkului înseamnă că scriptul la care se referă trebuie să fie executat cu parametrul stop. Aceasta este K11cron (linia 6) indică faptul că comanda / etc stop / init.d / cron se va efectua. Adică, daemonul cron va fi oprit. În consecință, litera S înseamnă că scriptul la care se specifică legătura trebuie executat cu parametrul de pornire. Numărul din două cifre determină ordinea de execuție a script-uri, și, prin urmare, ordinea de începere sau de finalizare a demonilor. Primii care rulează scripturi cu numere mai mici. Astfel, se realizează rezolvarea dependențelor scenariilor (daemonilor). De exemplu, daemonul cron trebuie oprit numai după ce daemonul apache2 este oprit (linii 6 și 3). În cazul în care link-uri simbolice același număr, acesta indică faptul că demonii nu sunt dependente unele de altele și script-uri pot fi executate în orice ordine. De asemenea, rețineți că toate scripturile cu litera K. sunt executate mai întâi și apoi numai toate scripturile cu litera S.
După cum știți, toate procesele utilizatorilor (și daemonii se referă și la ele) încep cu procesul de inițializare. dar care apoi citeste fișierul / etc / inittab. Printre altele, / etc / inittab are următoarele rânduri:
l0: 0: așteptați: /etc/init.d/rc 0
l1: 1: așteptați: /etc/init.d/rc 1
l2: 2: așteptați: /etc/init.d/rc 2
l3: 3: așteptați: /etc/init.d/rc 3
l4: 4: așteptați: /etc/init.d/rc 4
l5: 5: așteptați: /etc/init.d/rc 5
l6: 6: așteptați: /etc/init.d/rc 6
Când sistemul merge la un nivel de execuție. de exemplu, în al șaselea rând, scriptul /etc/init.d/rc este executat. care este trecut ca parametru pentru a începe numărul de nivel - 6. Ca rezultat al activității sale, script-ul / etc / init.d / rc începe să se efectueze în conformitate cu regulile de mai sus toate script-urile care au o legătură simbolică în /etc/rc6.d/ director. Într-o formă simplificată, numele fiecărui link simbolic este convertit la tipul K01gdm în /etc/init.d/gdm oprire. și S10sysklogd în /etc/init.d/sysklogd start.
Deci, dacă vrei un demon este pornit (sau oprit) la nivelul dorit, trebuie să creați link-ul simbolic în directorul /etc/rcN.d/ corespunzător. De exemplu, dacă nu doriți să rulați daemon cron la toate nivelurile înseamnă /etc/rcN.d/ din toate directoarele pe care doriți să le eliminați tipul de link-ul S80cron.
Dacă aveți propriul daemon (de exemplu, c mydaemon de control script-ul mydaemon) și doriți să ruleze pe nivelul 5, apoi executați în directorul /etc/rc5.d/ aveți nevoie pentru a crea o legătură simbolică:
/ linux $ sudo ln -s /etc/init.d/mydaemon /etc/rc5.d/S99mydaemon
Scriptul de control ar trebui să fie în mod natural în directorul /etc/init.d/.
Prin eliminarea și adăugarea de linkuri simbolice la directoarele /etc/rcN.d/, puteți configura pornirea și oprirea daemonilor la nivelele de pornire corespunzătoare.
### INIȚI INIȚIA INFO
# Oferă: apache2
# Necesar-Start: $ local_fs $ remote_fs $ rețea $ syslog
# Obligatoriu-Oprire: $ local_fs $ remote_fs $ rețea $ syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start / stop server web apache2
### END INIT INFO
Dacă executați chkconfig fără parametri suplimentari, link-urile simbolice vor fi create cu litera S în cataloage /etc/rcN.d pentru a rula nivele - 2 3 4 5, iar litera K în directoare /etc/rcN.d pentru a rula nivelurile 0 1 6.