Igorka Curs №25 - managementul demoni

Astăzi vorbim despre procese Linux. care sunt de denumire - demoni. și a vedea cum este controlul de demoni (sau servicii. Dacă vom face paralele cu Windows). Principalul proces diferență daemon de la procesul normal de utilizare, care daemon are terminalul de control, și în consecință, să interacționeze cu un utilizator poate numai prin intermediul altor programe de control sau script-uri. Deci, în cel mai simplu caz, un demon - un fișier executabil sau script care rulează în fundal. Foarte adesea, aceste fișiere se încheie cu litera D (de la daemonul): sshd, httpd, cupsd - deși acest lucru nu este obligatoriu.

Există un script de control pentru fiecare daemon pentru a gestiona demonul. Sunt astfel de script-uri sunt, de obicei în directorul /etc/init.d/. Acestea sunt script-urile de la demonul însuși (numai fără litera d la sfârșitul anului), cu toate că acest lucru nu este o regulă de rapid. De exemplu, script-ul /etc/init.d/ssh daemon rulează sshd. care se află în directorul / usr / sbin /.

Ce se înțelege de un demon controlat? Aceasta este o oportunitate de a efectua anumite operațiuni, cum ar fi pornirea daemon, stop, restart, închidere forțată și reporniți, și altele. Prin urmare, este controlat de pornire script-ul, trebuie să-l dea opțiunea care descrie acțiunea produsă de un demon. Acești parametri sunt strict definite, precum și de bază și cele mai frecvente sunt:

începe - începe daemon
opri - Oprește demonul
reporniți - reporniți daemon
Reîncărcare - reporniri (re-lectură fișierele de configurare) Setările Daemon
force-reload - forțată a reporni setările Daemon

Dacă aveți de gând să scrie un astfel de script de control, trebuie să ne amintim că trebuie să se ocupe de cel puțin doi parametri: porni și opri. Puteți deschide orice script-ul din directorul /etc/init.d/ și a vedea modul în care designul este pus în aplicare prin intermediul unor parametri de control de procesare caz.

Deci, să încercăm să oprească și să înceapă cron daemon. Pentru a face acest lucru în directorul /etc/init.d/ conține un script de control /etc/init.d/cron:

debian: / home / igor # /etc/init.d/cron
Utilizare: / etc / init.d / cron # 123; începe | opri | reporniți | reincarca | force-reload # 125; .
debian: / home / igor # oprire /etc/init.d/cron
Oprirea planificator de comandă periodică: crond.
debian: / home / igor # ps ax | grep [c] ron
debian: / home / igor # Start /etc/init.d/cron
Pornirea Scheduler comandă periodică: crond.
debian: / home / igor # ps ax | grep [c] ron
6524. Ss 0: 00 / usr / sbin / cron

Dacă rulați-l fără nici un parametru (linia 1), vom vedea un indiciu ce parametri trebuie să fie trecut la acest script (linia 2). Încercarea de a începe cu oprire parametrul (linia 3) și se verifică dacă daemonul oprit (linia 5). Apoi rulați daemonul (linia 6) și verificați (linia 8). În același mod se gestionarea altor daemon.

Să vedem acum cum are loc lansarea de demoni în timp de încărcare a sistemului de operare Linux și în timpul opririi. Așa cum trebuie să vă amintiți în Linux, există un astfel de lucru ca nivelul de execuție - nivelul de funcționare a sistemului. La fiecare nivel de pornire de sistem sunt executate cu precizie cantitatea predeterminată de demoni. În tranziția de la un nivel la altul, demonii care nu funcționează - completat și că ar trebui să funcționeze - run. Pentru a spune sistemului ce demonii la ce nivel ar trebui să înceapă să înceapă sau să se oprească în diferite distribuții, sunt special concepute pentru acest utilitar. Dar acum avem o privire la mecanismul de lucru al demonilor rula sistemul, pentru a înțelege esența sa.

În directorul / etc există un director numit rcN.d. unde N - este un simbol care indică nivelul de execuție în care catalogul. 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 din /etc/init.d/ directorul:

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 în numele linkului înseamnă că script-ul la care se face referire trebuie să fie executate cu opțiunea de oprire. Aceasta este K11cron (linia 6) înseamnă că comanda de oprire /etc/init.d/cron este executat. Acesta este cron daemon va fi oprit. Prin urmare, litera S indică faptul că script-ul care specifică link-ul trebuie să fie executate cu un parametru 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. Primele script-uri alerga cu numere mai mici. Astfel, script-uri a realizat dependența de rezoluție (demoni). De exemplu, cron daemon trebuie oprit numai după apache2 daemon este oprit (liniile 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, trebuie remarcat faptul că primul termen toate script-urile cu litera K. și atunci numai toate script-urile cu litera S.

După cum se știe, toate procesele utilizator (precum și acei demoni sunt) începe cu procesul de inițializare. și că secvențial citește fișierul / etc / inittab. Printre altele, în / etc / inittab are următoarele linii:

L0: 0. așteptați. / Etc / init.d / rc 0
l1: 1. așteptați. / Etc / init.d / rc 1
I2: 2. așteptați. / Etc / init.d / rc 2
l3: 3. așteptați. / Etc / init.d / rc 3
I4: 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

Atunci când sistemul merge pe orice nivel de execuție. de exemplu, în al șaselea, atunci /etc/init.d/rc script. care este trecut ca parametru pentru a începe numărul de nivel - 6. Ca urmare a script-ul lor /etc/init.d/rc de lucru î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 de 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ă:

Gestionarea script-naturale ar trebui să fie în directorul /etc/init.d/.

Eliminarea și adăugarea de link-uri simbolice în directoare /etc/rcN.d/ pot fi configurate pentru a porni și opri demonii rula la nivelurile corespunzătoare.

### BEGIN INIT INFO
# Oferă: apache2
# Necesar-Start: $ local_fs $ $ remote_fs rețea $ syslog
# Necesar-Stop: $ local_fs $ $ remote_fs rețea $ syslog
# Implicit-Start: 2 3 4 5
# Standard-Stop: 0 1 iunie
# Scurt-Descriere: Start server de web / oprire 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.

Cu toate acestea, n-ar strica menționa despre munca cu servicii in Fedora | RH | CentOS
Există un serviciu de utilități
EXEMPLUL serviciu httpd repornire
Deci, în ubuntu și debian sale foarte lipsit (în mod implicit nu este acolo)
Pozau în #aptitude instala sysvconfig

Am aplică atunci când astfel de pachete din programul nepodhodit trebuie să Campiglio, și, astfel, reporniți script-ul nu este în /etc/init.d/
de exemplu, astfel Compile proftpd. Numai în acest fel și poate perezapustkat.

Prin modul în care este în același timp întrebare. Și ce faci într-un astfel de caz, așa cum este sigur că am avut dreptate.

Valery, mulțumesc pentru comentariu. Despre serviciul de utilitate lector menționat, dar văd că am pierdut și nu a menționat în prelegerea lui. În viitorul apropiat fix.
Despre faptul că nu există nici un scenariu ... Poate am înțeles greșit (eu sunt doar de învățare), dar, de obicei, script-ul ar trebui să fie. Poate că nu este pusă în aplicare opțiunea de repornire, dar opriți, de pornire ar trebui să fie. Și asta înseamnă că puteți ajusta script-ul pentru a adăuga în caz - repornire, care va fi o provocare la prima oprire, și apoi începe. În plus față de ubuntu acum există ciocoi, care impune propriile sale caracteristici.

Există Ubuntu de servicii, cel puțin 9.10 servicii de rețele gdm am reușit.

Multumesc pentru articol, uite, nu există o greșeală de scriere? Scrii:
„Când sistemul merge pe orice nivel de rulare, de exemplu, în al șaselea, atunci /etc/init.d/rc script-ul, care este trecut ca parametru pentru a începe numărul de nivel - 6. Ca urmare a script-ul lor de lucru /etc/init.d/rc Ea începe să se efectueze în conformitate cu regulile de mai sus toate script-urile care au o legătură simbolică în /etc/rc5.d/ director. "

Posibil însemna „/etc/rc6.d/“?

Vă mulțumesc dezabonat.
Într-adevăr greșeală de scriere. Deja corectat.