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:
- a szolgáltatás eszköz, amelyet a régebbi rendszerekben a SysVinit szkriptek kezelésére használtak, és
- 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.
- 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.