Weboldal keresés

RHCSA sorozat: Folyamatkezelés az RHEL 7-ben: Boot, Shutdown, and Everything in Between – 5. rész


Ezt a cikket azzal kezdjük, hogy átfogó és rövid áttekintést adunk arról, hogy mi történik azóta, hogy megnyomja a Bekapcsológombot az RHEL 7 szerver bekapcsolásához, amíg meg nem kapja a bejelentkezést. képernyő egy parancssori felületen.

Kérjük, vegye figyelembe, hogy:

1. ugyanezek az alapelvek – esetleg kisebb módosításokkal – a többi Linux-disztribúcióra is érvényesek, és
2. A következő leírás nem a rendszerindítási folyamat kimerítő magyarázatát szolgálja, hanem csak az alapokat.

Linux rendszerindítási folyamat

1. A POST (bekapcsolási önteszt) inicializálja és hardverellenőrzéseket hajt végre.

2. Amikor a POST befejeződik, a rendszervezérlő átadódik az első lépcsős rendszertöltőnek, amely az egyik merevlemez rendszerindító szektorában tárolódik (régebbieknél BIOS-t és MBR-t használó rendszereken), vagy egy dedikált (U)EFI partíciót.

3. Az első szakaszban lévő rendszertöltő betölti a második fokozatú rendszertöltőt, általában a GRUB-t (GRand Unified Boot Loader), amely a következőben található:/boot, amely viszont betölti a kernelt és a kezdeti RAM-alapú fájlrendszert (más néven initramfs, amely olyan programokat és bináris fájlokat tartalmaz, amelyek elvégzik a szükséges műveleteket csatolja a tényleges gyökér fájlrendszert).

4. Megjelenik egy indítóképernyő, amely lehetővé teszi, hogy kiválasszuk az indítandó operációs rendszert és kernelt:

5. A kernel beállítja a rendszerhez csatlakoztatott hardvert, és a gyökér fájlrendszer felcsatolása után elindítja a folyamatot PID 1-vel, amely viszont inicializálja a többi folyamatot, és bejelentkezési felszólítással.

Megjegyzés: Ha ezt egy későbbi időpontban szeretnénk megtenni, megvizsgálhatjuk ennek a folyamatnak a sajátosságait a dmesg paranccsal, és szűrhetjük a kimenetét az általunk használt eszközök segítségével. a sorozat korábbi cikkeiben kifejtették.

A fenti példában a jól ismert ps parancsot használtuk az aktuális folyamatok listájának megjelenítésére, amelyek szülőfolyamata (vagy más szóval az őket elindító folyamat) rendszerezett > (a rendszer- és szolgáltatáskezelő, amelyre a legtöbb modern Linux disztribúció átváltott) a rendszer indításakor:

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

Ne feledje, hogy a -o jelző (a –format rövidítése) lehetővé teszi, hogy a ps kimenetét testreszabott formátumban jelenítse meg az Ön igényeinek megfelelően. a SZABVÁNYOS FORMÁTUM-MEGHATÁROZÁSOK szakaszában megadott kulcsszavakat a man ps programban.

Egy másik eset, amikor meg kell határoznia a ps kimenetét az alapértelmezett helyett, amikor meg kell találnia azokat a folyamatokat, amelyek jelentős CPU- és/vagy memóriaterhelést okoznak, és ennek megfelelően rendezni kell őket:

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)

Bevezetés a SystemD-be

A Linux világában kevés döntés váltott ki több vitát, mint a systemd átvétele a nagyobb Linux disztribúciók által. A Systemd szószólói fő előnyeiként a következő tényeket nevezik meg:

Olvassa el még: Az „init” és a „systemd” mögötti történet

1. A Systemd lehetővé teszi több feldolgozás párhuzamos végrehajtását a rendszerindítás során (szemben a régebbi SysVinit-tel, amely mindig lassabb, mert egyenként indítja el a folyamatokat, ellenőrzi ha az egyik a másiktól függ, majd megvárja, amíg a démonok elindulnak, hogy több szolgáltatás indulhasson), és

2. Dinamikus erőforrás-kezelésként működik egy futó rendszerben. Így a szolgáltatások akkor indulnak el, amikor szükséges (hogy elkerüljük a rendszererőforrások igénybevételét, ha nincsenek használatban), ahelyett, hogy a rendszerindítás során indoklás nélkül indulnának el.

3. Visszafelé kompatibilitás a SysVinit szkriptekkel.

A Systemd elemet a systemctl segédprogram vezérli. Ha Ön SysVinit háttérrel rendelkezik, valószínűleg ismeri a következőket:

  1. a szolgáltatás eszköz, amelyet a régebbi rendszerekben a SysVinit szkriptek kezelésére használtak, és
  2. a chkconfig segédprogram, amely a rendszerszolgáltatások futási szintű információinak frissítését és lekérdezését szolgálta.
  3. leállítás, amelyet többször kellett használnia egy futó rendszer újraindításához vagy leállításához.

Az alábbi táblázat bemutatja a hasonlóságokat ezen régi eszközök és a systemctl használata között:

Legacy tool Systemctl equivalent Description
service name start systemctl start name Start name (where name is a service)
service name stop systemctl stop name Stop name
service name condrestart systemctl try-restart name Restarts name (if it’s already running)
service name restart systemctl restart name Restarts name
service name reload systemctl reload name Reloads the configuration for name
service name status systemctl status name Displays the current status of name
service –status-all systemctl Displays the status of all current services
chkconfig name on systemctl enable name Enable name to run on startup as specified in the unit file (the file to which the symlink points). The process of enabling or disabling a service to start automatically on boot consists in adding or removing symbolic links inside the /etc/systemd/system directory.
chkconfig name off systemctl disable name Disables name to run on startup as specified in the unit file (the file to which the symlink points)
chkconfig –list name systemctl is-enabled name Verify whether name (a specific service) is currently enabled
chkconfig –list systemctl –type=service Displays all services and tells whether they are enabled or disabled
shutdown -h now systemctl poweroff Power-off the machine (halt)
shutdown -r now systemctl reboot Reboot the system

A Systemd bevezette az egységek (amelyek lehetnek szolgáltatások, csatlakozási pontok, eszközök vagy hálózati aljzatok) és a célpontok fogalmát (így sikerül a systemd egyszerre több kapcsolódó folyamatot elindítania). időt, és – bár nem egyenlőnek – tekinthető a SysVinit-alapú rendszerek futási szintjeinek megfelelőjének.

Összegezve

A folyamatmenedzsmenttel kapcsolatos egyéb feladatok közé tartozik, de nem kizárólagosan, a következők képessége:

1. Állítsa be a végrehajtási prioritást egy folyamat rendszererőforrás-használatára vonatkozóan:

Ez a renice segédprogrammal érhető el, amely megváltoztatja egy vagy több futó folyamat ütemezési prioritását. Egyszerűen fogalmazva, az ütemezési prioritás egy olyan szolgáltatás, amely lehetővé teszi a kernel számára (amely a => 2.6 verziókban jelen van) a rendszererőforrások hozzárendelését a hozzárendelt végrehajtási prioritásnak megfelelően (más néven kedvesség, a következő tartományban: ). -20 és 19) között egy adott folyamat.

A renice alapvető szintaxisa a következő:

renice [-n] priority [-gpu] identifier

A fenti általános parancsban az első argumentum a használandó prioritási érték, míg a másik argumentum értelmezhető folyamatazonosítókként (ez az alapértelmezett beállítás), folyamatcsoport-azonosítókként, felhasználói azonosítókként, ill. felhasználói nevek. Egy normál felhasználó (kivéve a root) csak a tulajdonában lévő folyamat ütemezési prioritását módosíthatja, és csak a finomsági szintet növelheti (ami azt jelenti, hogy kevesebb rendszererőforrást igényel).

2. Szükség szerint állítsa le a folyamatot (vagy szakítsa meg a normál végrehajtást):

Pontosabban fogalmazva, egy folyamat megölése feljogosít arra, hogy jelzést küldjön neki, hogy vagy kecsesen fejezze be a végrehajtást (SIGTERM=15), vagy azonnal (SIGKILL=9) a kill vagy pkill segítségével. parancsokat.

A két eszköz közötti különbség az, hogy az előbbi egy adott folyamat vagy folyamatcsoport teljes leállítására szolgál, míg az utóbbi lehetővé teszi ugyanezt a név és egyéb attribútumok alapján.

Ezenkívül a pkill a pgrep-hez tartozik, amely megmutatja, hogy a pkill használata milyen PID-eket érint. Például futás előtt:

pkill -u gacanepa

Hasznos lehet egy pillantással megnézni, melyek a gacanepa tulajdonában lévő PID-k:

pgrep -l -u gacanepa

Alapértelmezés szerint a kill és a pkill egyaránt elküldi a SIGTERM jelet a folyamatnak. Ahogy fentebb említettük, ez a jel figyelmen kívül hagyható (amíg a folyamat befejeződik, vagy véglegesen), így ha komoly okból le kell állítania egy futó folyamatot, meg kell adnia a SIGKILL > jel a parancssorban:

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 

Következtetés

Ebben a cikkben elmagyaráztuk az RHEL 7 rendszer indítási folyamatának alapjait, és elemeztünk néhány olyan eszközt, amelyek segítenek a folyamatok kezelésében általános segédprogramokkal. és systemd-specifikus parancsok.

Ne feledje, hogy ez a lista nem terjed ki a témában szereplő összes csengőre és sípra, ezért nyugodtan adja hozzá a saját preferált eszközeit és parancsait ehhez a cikkhez az alábbi megjegyzés űrlap segítségével. Kérdéseket és egyéb észrevételeket is szívesen fogadunk.