LFCS: sistemos paleidimo proceso ir paslaugų valdymas (SysVinit, Systemd ir Upstart) – 7 dalis


Prieš porą mėnesių Linux fondas paskelbė LFCS (Linux Foundation Certified Sysadmin) sertifikatą – įdomią naują programą, kurios tikslas – leisti asmenims iš visų pasaulio kraštų gauti sertifikatą atlikti pagrindines ir vidutines sistemos administravimo užduotis Linux sistemose. Tai apima jau veikiančių sistemų ir paslaugų palaikymą, problemų paiešką ir analizę iš pirmų rankų, taip pat galimybę nuspręsti, kada kelti problemas inžinierių komandoms.

Šiame vaizdo įraše aprašomas trumpas „Linux Foundation“ sertifikavimo programos įvadas.

Šis įrašas yra 10 pamokų serijos 7 dalis. Šioje dalyje paaiškinsime, kaip valdyti „Linux“ sistemos paleidimo procesą ir paslaugas, kurios yra būtinos LFCS sertifikavimo egzaminui.

„Linux“ paleidimo proceso valdymas

„Linux“ sistemos įkrovos procesas susideda iš kelių fazių, kurių kiekviena atstovaujama skirtingu komponentu. Šioje diagramoje trumpai apibendrinamas įkrovos procesas ir parodomi visi pagrindiniai komponentai.

Kai paspausite įrenginio maitinimo mygtuką, pagrindinės plokštės EEPROM mikroschemoje saugoma programinė įranga inicijuoja POST ( Įjungimo savikontrolė), kad patikrintumėte sistemos aparatinės įrangos išteklių būklę. Kai baigsis POST, programinė įranga ieško ir įkelia 1-ojo etapo įkrovos programą, esančią MBR arba EFI. pirmojo galimo disko skaidinį ir suteikia jo valdymą.

MBR metodas

MBR yra pirmame disko sektoriuje, kuris BIOS nustatymuose pažymėtas kaip įkraunamas, ir yra 512 baitų dydžio.

  1. Pirmieji 446 baitai: įkrovos programoje yra vykdomasis kodas ir klaidos pranešimo tekstas.
  2. Kiti 64 baitai: skirsnių lentelėje yra kiekvieno iš keturių skaidinių (pagrindinio arba išplėstinio) įrašas. Be kita ko, kiekvienas įrašas nurodo kiekvieno skaidinio būseną (aktyvus/neaktyvus), dydį ir pradžios/pabaigos sektorius.
  3. Paskutiniai 2 baitai: stebuklingas skaičius naudojamas kaip MBR patvirtinimo patikra.

Šia komanda sukuriama MBR atsarginė kopija (šiame pavyzdyje /dev/sda yra pirmasis standusis diskas). Gautas failas mbr.bkp gali būti naudingas, jei skaidinių lentelė sugadinta, pvz., sistema tampa nebeįkraunama.

Žinoma, norėdami jį naudoti vėliau, jei iškils poreikis, turėsime jį išsaugoti ir kur nors kitur (pvz., USB diske). Šis failas padės mums atkurti MBR ir vėl veiks, jei ir tik tuo tarpu nepakeisime standžiojo disko išdėstymo.

MBR atsarginė kopija
dd if=/dev/sda of=mbr.bkp bs=512 count=1

MBR atkūrimas
dd if=mbr.bkp of=/dev/sda bs=512 count=1

EFI/UEFI metodas

Sistemose, kuriose naudojamas EFI/UEFI metodas, UEFI programinė įranga nuskaito savo nustatymus, kad nustatytų, kuri UEFI programa turi būti paleista ir iš kur (t. y. kuriame diske ir skaidinyje bus paleidžiama). EFI skaidinys yra).

Tada įkeliamas ir paleistas 2-asis etapas įkrovos įkroviklis (dar žinomas kaip įkrovos tvarkyklė). GRUB [GRand Unified Boot] yra dažniausiai naudojama Linux įkrovos tvarkyklė. Daugumoje šiandien naudojamų sistemų galima rasti vieną iš dviejų skirtingų versijų.

  1. Senas GRUB konfigūracijos failas: /boot/grub/menu.lst (senesni platinimai, nepalaikomi EFI/UEFI programinės įrangos).
  2. GRUB2 konfigūracijos failas: greičiausiai /etc/default/grub.

Nors LFCS egzamino tikslai aiškiai nereikalauja žinių apie GRUB vidines dalis, jei esate drąsus ir galite sau leisti sujaukti savo sistemą (galite tai išbandyti pirmiausia virtualioje mašinoje, tik tuo atveju), turite paleisti.

update-grub

Kaip root pakeitus GRUB konfigūraciją, kad būtų pritaikyti pakeitimai.

Iš esmės GRUB įkelia numatytąjį brandulį ir initrd arba initramfs vaizdą. Keliais žodžiais tariant, initrd arba initramfs padeda atlikti aparatinės įrangos aptikimą, branduolio modulio įkėlimą ir įrenginio aptikimą, reikalingą tikrosios šakninės failų sistemos prijungimui.

Sukūrus tikrąją šakninę failų sistemą, branduolys vykdo sistemos ir paslaugų tvarkyklę (init arba systemd, kurios proceso identifikatorius arba PID visada yra 1), kad pradėtų įprastą vartotojo erdvės įkrovos procesas, kad būtų pateikta vartotojo sąsaja.

Tiek init, tiek systemd yra demonai (foniniai procesai), kurie valdo kitus demonus kaip pirmą paleidžiamą paslaugą (įkrovos metu) ir paskutinę paslaugą, kuri nutraukiama (išjungimo metu).

Paslaugų pradžia („SysVinit“)

Vykdymo lygių sąvoka Linux sistemoje nurodo skirtingus būdus, kaip naudoti sistemą kontroliuojant, kurios paslaugos veikia. Kitaip tariant, vykdymo lygis valdo, kokias užduotis galima atlikti dabartinėje vykdymo būsenoje=vykdymo lygis (o kurių negalima).

Tradiciškai šis paleidimo procesas buvo vykdomas remiantis sutartimis, kurios atsirado naudojant System V UNIX, kai sistema perduoda scenarijų rinkinius, kurie paleidžia ir sustabdo paslaugas, kai mašina patenka į konkretų vykdymo lygį (kitaip tariant , yra kitoks sistemos veikimo režimas).

Kiekviename vykdymo lygyje galima nustatyti, kad atskiros paslaugos veiktų arba būtų išjungtos, jei jos veikia. Naujausios kai kurių pagrindinių paskirstymų versijos nutolsta nuo System V standarto ir pasirenka gana naują paslaugų ir sistemos tvarkyklę, vadinamą systemd (tai reiškia sistemos demoną), tačiau paprastai palaiko sysv komandas suderinamumo tikslais. Tai reiškia, kad galite paleisti daugumą gerai žinomų sysv inicijavimo įrankių sisteminiu platinimu.

Taip pat skaitykite: kodėl „systemd“ pakeičia „init“ sistemoje „Linux“.

Be sistemos proceso pradžios, init ieško failo /etc/inittab, kad nuspręstų, kokį vykdymo lygį reikia įvesti.

Runlevel

Aprašymas

0

Sustabdykite sistemą. 0 vykdymo lygis yra speciali pereinamoji būsena, naudojama norint greitai išjungti sistemą.

1

Taip pat vadinamas s arba S, šis vykdymo lygis kartais vadinamas priežiūros režimu. Kokios paslaugos, jei tokių yra, paleidžiamos šiuo vykdymo lygiu, priklauso nuo platinimo. Paprastai jis naudojamas žemo lygio sistemos priežiūrai, kuriai gali pakenkti įprastas sistemos veikimas.

2

Daugiafunkcis. Debian sistemose ir išvestinėse programose tai yra numatytasis vykdymo lygis ir apima grafinį prisijungimą, jei įmanoma. Red-Hat sistemose tai yra kelių vartotojų režimas be tinklo.

3

Red-Hat pagrįstose sistemose tai yra numatytasis kelių naudotojų režimas, kuriame veikia viskas, išskyrus grafinę aplinką. Šis vykdymo lygis ir 4 bei 5 lygiai paprastai nenaudojami Debian pagrindu veikiančiose sistemose.

4

Paprastai pagal numatytuosius nustatymus nenaudojamas, todėl galima tinkinti.

5

Red-Hat pagrįstose sistemose visas kelių vartotojų režimas su GUI prisijungimu. Šis vykdymo lygis yra panašus į 3 lygį, tačiau galimas GUI prisijungimas.

6

Perkraukite sistemą.

Norėdami perjungti vykdymo lygius, galime tiesiog pakeisti vykdymo lygį naudodami komandą init: init N (kur N yra vienas iš aukščiau išvardytų vykdymo lygių). Atkreipkite dėmesį, kad tai nėra rekomenduojamas būdas perkelti veikiančią sistemą į kitą vykdymo lygį, nes jis neįspėja esamų prisijungusių vartotojų (todėl jie praranda darbą, o procesai nutrūksta neįprastai).

Vietoj to, sistemai iš naujo paleisti reikia naudoti komandą shutdown (kuri pirmiausia siunčia įspėjamąjį pranešimą visiems prisijungusiems vartotojams ir blokuoja bet kokius tolesnius prisijungimus; tada signalizuoja init, kad perjungtų paleidimo lygius); tačiau numatytąjį vykdymo lygį (kurį sistema paleis) pirmiausia reikia redaguoti /etc/inittab faile.

Dėl šios priežasties atlikite šiuos veiksmus, kad tinkamai perjungtumėte vykdymo lygius. Kaip root, ieškokite šios eilutės /etc/inittab.

id:2:initdefault:

ir pakeiskite norimo vykdymo lygio skaičių 2 naudodami pageidaujamą teksto rengyklę, pvz., „vim“ (aprašyta „Kaip naudoti vi/vim redaktorių Linux sistemoje – 2 šios serijos dalis).

Tada paleiskite kaip root.

shutdown -r now

Ta paskutinė komanda iš naujo paleis sistemą, todėl ji bus paleista nurodytame vykdymo lygyje kito paleidimo metu ir paleis scenarijus, esančius /etc/rc[runlevel].d > katalogą, kad nuspręstumėte, kurias paslaugas reikia pradėti, o kurias ne. Pavyzdžiui, 2 vykdymo lygiui šioje sistemoje.

Tvarkykite paslaugas naudodami chkconfig

Norėdami įjungti arba išjungti sistemos paslaugas paleidžiant, naudosime komandą chkconfig sistemoje CentOS/openSUSE ir sysv-rc-conf Debian ir išvestinėse programose. Šis įrankis taip pat gali parodyti, kokia yra iš anksto sukonfigūruota paslaugos būsena tam tikram vykdymo lygiui.

Taip pat skaitykite: kaip sustabdyti ir išjungti nepageidaujamas paslaugas sistemoje „Linux“.

Paslaugos vykdymo lygio konfigūracijos sąrašas.

chkconfig --list [service name]
chkconfig --list postfix
chkconfig --list mysqld

Aukščiau esančiame paveikslėlyje matome, kad postfix nustatytas paleisti, kai sistema patenka į paleidimo lygius nuo 2 iki 5, tuo tarpu mysqld b> pagal numatytuosius nustatymus veiks 24 vykdymo lygiuose. Dabar tarkime, kad tai nėra laukiamas elgesys.

Pavyzdžiui, taip pat turime įjungti mysqld 5 vykdymo lygiui ir išjungti postfix 4 ir 5 vykdymo lygiams. Štai ką darytume kiekvienu atveju (paleiskite sekančios komandos kaip root).

Paslaugos įjungimas tam tikram vykdymo lygiui
chkconfig --level [level(s)] service on
chkconfig --level 5 mysqld on
Paslaugos išjungimas tam tikriems vykdymo lygiams
chkconfig --level [level(s)] service off
chkconfig --level 45 postfix off

Dabar panašias užduotis atliksime Debian'o sistemoje naudodami sysv-rc-conf.

Tvarkykite paslaugas naudodami sysv-rc-conf

Paslaugos konfigūravimas, kad ji būtų paleista automatiškai konkrečiame vykdymo lygyje ir neleistų jai paleisti visų kitų.

1. Naudokime šią komandą, kad pamatytume, kokie yra paleidimo lygiai, kuriuose sukonfigūruotas paleisti mdadm.

ls -l /etc/rc[0-6].d | grep -E 'rc[0-6]|mdadm'

2. Naudosime sysv-rc-conf, kad mdadm nepasileistų visuose paleidimo lygiuose, išskyrus 2. Tiesiog pažymėkite arba panaikinkite žymėjimą (su tarpo klavišu), jei norite (rodyklių klavišais galite judėti aukštyn, žemyn, kairėn ir dešinėn).

sysv-rc-conf

Tada paspauskite q, kad išeitumėte.

3. Iš naujo paleisime sistemą ir dar kartą vykdysime komandą iš 1 veiksmo.

ls -l /etc/rc[0-6].d | grep -E 'rc[0-6]|mdadm'

Aukščiau esančiame paveikslėlyje matome, kad mdadm sukonfigūruotas taip, kad būtų paleistas tik 2 vykdymo lygiu.

O kaip su sistema?

systemd yra dar viena paslauga ir sistemos tvarkyklė, kurią perima keli pagrindiniai Linux platinimai. Juo siekiama leisti daugiau apdorojimo atlikti lygiagrečiai paleidžiant sistemą (skirtingai nuo sysvinit, kuri visada būna lėtesnė, nes vienu metu pradeda procesus, tikrina, ar jie priklauso nuo kito, ir laukia demonus, kad būtų galima paleisti daugiau paslaugų), ir tarnauja kaip dinamiškas veikiančios sistemos išteklių valdymas.

Taigi paslaugos paleidžiamos tada, kai reikia (kad nebūtų sunaudojami sistemos ištekliai), o ne paleidžiamos be rimtos priežasties įkrovos metu.

Jei norite peržiūrėti visų jūsų sistemoje veikiančių procesų, tiek sisteminių savųjų, tiek SysV paslaugų, būseną, paleiskite šią komandą.

systemctl

Stulpelyje Įkelti rodoma, ar vieneto apibrėžimas (žr. stulpelį UNIT, kuriame rodoma paslauga ar bet kas, kurį palaiko systemd) buvo tinkamai įkeltas, o ACTIVE ir SUB stulpeliuose rodoma dabartinė tokio vieneto būsena.

Rodoma informacija apie esamą paslaugos būseną

Kai stulpelis AKTYVUS rodo, kad įrenginio būsena yra kita nei aktyvi, galime patikrinti, kas atsitiko, naudodami.

systemctl status [unit]

Pavyzdžiui, aukščiau esančiame paveikslėlyje media-samba.mount yra nesėkmingos būsenos. Pabėgiokime.

systemctl status media-samba.mount

Matome, kad media-samba.mount nepavyko, nes prieglobos dev1 prijungimo procesas negalėjo rasti tinklo dalies adresu //192.168.0.10/gacanepa.

Paslaugų paleidimas arba sustabdymas

Kai bus pasiekiama tinklo dalis //192.168.0.10/gacanepa, pabandykime paleisti, tada sustabdyti ir galiausiai iš naujo paleisti įrenginį media-samba.mount. Atlikę kiekvieną veiksmą, paleiskite systemctl status media-samba.mount, kad patikrintume jo būseną.

systemctl start media-samba.mount
systemctl status media-samba.mount
systemctl stop media-samba.mount
systemctl restart media-samba.mount
systemctl status media-samba.mount

Paslaugos įjungimas arba išjungimas paleidžiant įkrovą

Dalyje sistema galite įjungti arba išjungti paslaugą, kai ji įkeliama.

systemctl enable [service] 		# enable a service 
systemctl disable [service] 		# prevent a service from starting at boot

Paslaugos įjungimas arba išjungimas automatiškai paleidžiant įkrovą apima simbolinių nuorodų pridėjimą arba pašalinimą kataloge /etc/systemd/system/multi-user.target.wants.

Arba galite sužinoti esamą paslaugos būseną (įjungta arba išjungta) naudodami komandą.

systemctl is-enabled [service]

Pavyzdžiui,

systemctl is-enabled postfix.service

Be to, galite iš naujo paleisti arba išjungti sistemą naudodami.

systemctl reboot
systemctl shutdown

Pradedantis

Upstart yra įvykiais pagrįstas demono /sbin/init pakaitalas ir atsirado dėl poreikio paleisti paslaugas tik tada, kai jų reikia (taip pat prižiūrint jas veikia) ir tvarkyti įvykius, kai jie įvyksta, taip pranokstant klasikinę priklausomybe pagrįstą sysvinit sistemą.

Iš pradžių jis buvo sukurtas Ubuntu paskirstymui, bet naudojamas Red Hat Enterprise Linux 6.0. Nors buvo numatyta, kad jis tinkamas diegti visuose Linux platinimuose kaip sysvinit pakaitalas, laikui bėgant jį užgožė systemd. 2014 m. vasario 14 d. Markas Shuttleworthas (Canonical Ltd. įkūrėjas) paskelbė, kad būsimuose Ubuntu leidimuose bus naudojamas systemd kaip numatytasis inicijavimo demonas.

Kadangi sistemos SysV paleisties scenarijus buvo toks įprastas taip ilgai, daugelis programinės įrangos paketų apima SysV paleisties scenarijus. Kad tilptų tokius paketus, Upstart suteikia suderinamumo režimą: paleidžia SysV paleisties scenarijus įprastose vietose (/etc/rc.d/rc?.d, /etc/init.d/ rc?.d, /etc/rc?.d arba panašioje vietoje). Taigi, jei įdiegsime paketą, kuriame dar nėra Upstart konfigūracijos scenarijaus, jis vis tiek turėtų būti paleistas įprastu būdu.

Be to, jei įdiegėme paslaugų programas, tokias kaip chkconfig, turėtumėte turėti galimybę jas naudoti norėdami valdyti savo SysV pagrįstas paslaugas taip pat, kaip tai darytume su sysvinit pagrįstomis sistemomis.

Pradiniai scenarijai taip pat palaiko paslaugų paleidimą arba sustabdymą, pagrįstą įvairesniais veiksmais nei SysV paleisties scenarijai; Pavyzdžiui, „Upstart“ gali paleisti paslaugą, kai prijungiamas tam tikras aparatūros įrenginys.

Sistema, kuri naudoja „Upstart“ ir jo vietinius scenarijus, išimtinai pakeičia failą /etc/inittab ir paleidimo lygiui būdingus SysV paleisties scenarijų katalogus .conf scenarijus kataloge /etc/init.

Šiuos *.conf scenarijus (taip pat žinomus kaip darbo apibrėžimai) paprastai sudaro šie:

    1. Proceso aprašymas.
    2. Vykdymo lygiai, kuriuose procesas turėtų vykti, arba įvykiai, kurie turėtų jį suaktyvinti.
    3. Vykdymo lygiai, kuriuose procesas turėtų būti sustabdytas, arba įvykiai, kurie turėtų jį sustabdyti.
    4. Galimybės.
    5. Komanda paleisti procesą.

Pavyzdžiui,

My test service - Upstart script demo description "Here goes the description of 'My test service'" author "Dave Null <[email >"
Stanzas

#
Stanzas define when and how a process is started and stopped
See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
When to start the service
start on runlevel [2345]
When to stop the service
stop on runlevel [016]
Automatically restart process in case of crash
respawn
Specify working directory
chdir /home/dave/myfiles
Specify the process/command (add arguments if needed) to run
exec bash backup.sh arg1 arg2

Norėdami pritaikyti pakeitimus, turėsite nurodyti upstart iš naujo įkelti konfigūraciją.

initctl reload-configuration

Tada pradėkite savo darbą įvesdami šią komandą.

sudo start yourjobname

Kur jūsų darbo vardas yra darbo, kuris buvo pridėtas anksčiau naudojant yourjobname.conf scenarijų, pavadinimas.

Išsamesnį ir išsamesnį „Upstart“ informacinį vadovą rasite projekto interneto svetainės meniu „Kuparų knyga“.

Santrauka

„Linux“ įkrovos proceso išmanymas yra būtinas norint padėti atlikti trikčių šalinimo užduotis, taip pat pritaikyti kompiuterio našumą ir veikiančias paslaugas pagal jūsų poreikius.

Šiame straipsnyje išanalizavome, kas nutinka nuo to momento, kai paspaudžiate jungiklį Maitinimas, kad įjungtumėte įrenginį, kol gausite visiškai veikiančią vartotojo sąsają. Tikiuosi, kad jūs taip pat išmokote jį skaityti, kaip ir aš jį kurdamas. Nedvejodami palikite savo komentarus ar klausimus žemiau. Visada laukiame mūsų skaitytojų žinučių!