RHCSA serija: RHEL 7 procesų valdymas: įkrovimas, išjungimas ir viskas tarp jų - 5 dalis


Šį straipsnį pradėsime išsamiai ir trumpai apžvelgdami, kas vyksta nuo to momento, kai paspaudžiate maitinimo mygtuką, kad įjungtumėte savo RHEL 7 serverį, kol komandinės eilutės sąsajoje jums bus pateiktas prisijungimo ekranas.

Prašau Pasižymėk tai:

1. tie patys pagrindiniai principai, turint nedidelių pakeitimų, galioja ir kitiems „Linux“ paskirstymams bei 2. Šis aprašymas nėra skirtas išsamiam įkrovos proceso paaiškinimui, o tik pagrindams.

„Linux“ įkrovos procesas

1. POST („Power On Self Test“) įjungia ir atlieka aparatūros patikrinimus.

2. Baigus POST, sistemos valdymas perduodamas pirmojo pakopos įkėlėjui, kuris saugomas arba vieno iš standžiųjų diskų įkrovos sektoriuje (senesnėms sistemoms, naudojančioms BIOS ir MBR), arba tam skirtame (U) EFI. skaidinys.

3. Pirmojo etapo įkroviklis įkelia antrojo pakopos įkroviklį, dažniausiai GRUB („GRand Unified Boot Loader“), esantį/įkrovos viduje, o tai savo ruožtu įkelia branduolį ir pradinę RAM pagrindu veikiančią failų sistemą (dar vadinamą initramfs). , kuriame yra programos ir dvejetainiai failai, atliekantys būtinus veiksmus, reikalingus galutiniam šaknies failų sistemos prijungimui).

4. Mums pateikiamas purslų ekranas, kuris leidžia mums pasirinkti operacinę sistemą ir branduolį, kad galėtume paleisti:

5. Branduolys nustato prie sistemos prijungtą aparatinę įrangą ir, įdiegus šaknų failų sistemą, pradeda procesą su PID 1, kuris savo ruožtu inicijuos kitus procesus ir pateiks mums prisijungimo eilutę.

Pastaba: Jei norime tai padaryti vėliau, galime išnagrinėti šio proceso ypatumus naudodami komandą dmesg ir filtruodami jos išvestį naudodami įrankius, kuriuos paaiškinome ankstesniuose šios serijos straipsniuose.

Ankstesniame pavyzdyje mes naudojome gerai žinomą komandą ps, norėdami parodyti dabartinių procesų, kurių pagrindinis procesas (arba, kitaip tariant, procesas, kuris juos pradėjo, yra „systemd“, yra sistemosd (sistemos ir paslaugų tvarkyklė, kurią pakeitė dauguma šiuolaikinių „Linux“ paskirstymų) to) sistemos paleidimo metu:

# ps -o ppid,pid,uname,comm --ppid=1

Atminkite, kad „-o“ vėliava (sutrumpinta –formatu) leidžia pateikti ps išvestį pritaikytu formatu, atitinkančiu jūsų poreikius, naudojant raktinius žodžius, nurodytus „ps ps“ STANDARTINIO FORMATO SPECIFIKATORIAI.

Kitas atvejis, kai norėsite apibrėžti ps išvestį, o ne eiti su numatytuoju, yra tada, kai reikia rasti procesus, kurie sukelia didelę procesoriaus ir (arba) atminties apkrovą, ir juos atitinkamai rūšiuoti:

# ps aux --sort=+pcpu              # Sort by %CPU (ascending)
# ps aux --sort=-pcpu              # Sort by %CPU (descending)
# ps aux --sort=+pmem              # Sort by %MEM (ascending)
# ps aux --sort=-pmem              # Sort by %MEM (descending)
# ps aux --sort=+pcpu,-pmem        # Combine sort by %CPU (ascending) and %MEM (descending)

„SystemD“ įvadas

Nedaug sprendimų „Linux“ pasaulyje sukėlė daugiau ginčų nei didelių „Linux“ distribucijų priimta sistema. „Systemd“ pagrindinius privalumus vardija šie faktai:

Taip pat skaitykite: „Init“ ir „systemd“ istorija

1. „Systemd“ leidžia daugiau apdoroti lygiagrečiai paleidžiant sistemą (priešingai nei senesnėje sistemoje „SysVinit“, kuri visada būna lėtesnė, nes ji paleidžia procesus po vieną, patikrina, ar vienas nepriklauso nuo kito, ir tada laukia, kol paleis demonai gali prasidėti daugiau paslaugų) ir

2. Jis veikia kaip dinaminis išteklių valdymas veikiančioje sistemoje. Taigi paslaugos pradedamos prireikus (siekiant išvengti sistemos išteklių sunaudojimo, jei jos nenaudojamos), užuot paleidus be pagrįstos priežasties įkrovos metu.

3. Atgalinis suderinamumas su „SysVinit“ scenarijais.

„Systemd“ valdo „systemctl“ įrankis. Jei esate „SysVinit“ fone, greičiausiai būsite susipažinę:

  1. paslaugų įrankis, kuris - tose senesnėse sistemose - buvo naudojamas valdyti „SysVinit“ scenarijus ir
  2. „chkconfig“ įrankis, skirtas sistemos paslaugų vykdymo lygio informacijos atnaujinimui ir užklausoms pateikti.
  3. išjungimas, kurį turite naudoti kelis kartus paleisdami arba sustabdydami veikiančią sistemą.

Šioje lentelėje parodyti šių senų įrankių naudojimo ir „systemctl“ panašumai:

„Systemd“ taip pat pristatė vienetų (tai gali būti paslauga, prijungimo taškas, įrenginys arba tinklo lizdas) ir taikinių (taip „systemd“ sugeba pradėti kelis susijusius procesus vienu metu) sąvokas ir jas galima laikyti - nors ir ne lygus - kaip „SysVinit“ pagrįstų sistemų bėgimo lygių atitikmuo.

Apibendrinant

Kitos su procesų valdymu susijusios užduotys apima, bet gali neapsiriboti, galimybę:

Tai pasiekiama naudojant „renice“ įrankį, kuris pakeičia vieno ar daugiau vykstančių procesų planavimo prioritetą. Paprasčiau tariant, planavimo prioritetas yra funkcija, leidžianti branduoliui (esantis versijose => 2.6) paskirstyti sistemos išteklius pagal priskirtą vykdymo prioritetą (dar žinomą kaip gražumas, diapazone nuo -20 iki 19) tam tikram procesui.

Pagrindinė renice sintaksė yra tokia:

# renice [-n] priority [-gpu] identifier

Pirmiau pateiktoje bendrojoje komandoje pirmasis argumentas yra prioritetinė vertė, kurią reikia naudoti, o kitas argumentas gali būti interpretuojamas kaip proceso ID (kuris yra numatytasis nustatymas), proceso grupės ID, vartotojo ID ar vartotojo vardą. Paprastas vartotojas (išskyrus šakninį) gali pakeisti tik jam priklausančio proceso planavimo prioritetą ir tik padidinti gražumo lygį (tai reiškia, kad reikia mažiau sistemos išteklių).

Tiksliau tariant, užmušus procesą suteikiama teisė išsiųsti jam signalą arba grakščiai užbaigti (SIGTERM = 15), arba nedelsiant (SIGKILL = 9) naudojant komandas kill arba pkill.

Šių dviejų įrankių skirtumas yra tas, kad pirmieji naudojami tam tikram procesui ar procesų grupei apskritai nutraukti, o antrasis leidžia tą patį padaryti pagal pavadinimą ir kitus atributus.

Be to, „pkill“ yra komplektuojamas su „pgrep“, kuris parodo PID, kurie bus paveikti, jei būtų naudojamas „pkill“. Pavyzdžiui, prieš paleisdami:

# pkill -u gacanepa

Gali būti naudinga iš pirmo žvilgsnio peržiūrėti, kurie PAC priklauso gacanepai:

# pgrep -l -u gacanepa

Pagal numatytuosius nustatymus tiek kill, tiek pkill siunčia SIGTERM signalą į procesą. Kaip jau minėjome aukščiau, šio signalo galima nepaisyti (kol procesas bus baigtas arba visam laikui), taigi, kai rimtai reikia sustabdyti vykdomą procesą dėl pagrįstos priežasties, komandinėje eilutėje turėsite nurodyti signalą SIGKILL:

# kill -9 identifier               # Kill a process or a process group
# kill -s SIGNAL identifier        # Idem
# pkill -s SIGNAL identifier       # Kill a process by name or other attributes 

Išvada

Šiame straipsnyje mes paaiškinome įkrovos proceso pagrindus RHEL 7 sistemoje ir išanalizavome keletą galimų įrankių, kurie padės jums valdyti procesus naudojant įprastas komunalines paslaugas ir „systemd“ komandas.

Atkreipkite dėmesį, kad šis sąrašas nėra skirtas visiems šios temos varpams ir švilpukams apimti, todėl drąsiai pridėkite savo pageidaujamų įrankių ir komandų prie šio straipsnio naudodami toliau pateiktą komentarų formą. Klausimai ir kiti komentarai taip pat laukiami.