Proces zombie. Nie všetci počuli o tomto zaujímavom, ale strašidelnom slove súvisiacom s operačným systémom Linux. V osobnom počítači nemusí byť proces zombie pre bežného používateľa hrozbou, ale pokiaľ ide o servery Linux, tieto procesy je potrebné identifikovať a zastaviť.
Takéto procesy môžu spôsobiť problémy s tabuľkou procesov vášho systému a následne narušiť správne fungovanie vášho zariadenia. Preto si v tomto článku podrobne rozoberieme procesy zombie spolu s komplexným sprievodcom hľadaním a zabíjaním procesov zombie na stroji s Linuxom.
Čo sú procesy zombie?
Ale predtým je dôležité, aby ste vedeli, čo procesy zombie v skutočnosti sú. Nie sú to nič iné ako mŕtve a zaniknuté procesy, ktoré zaberajú miesto v tabuľke systémových procesov. A blok riadenia procesu alebo PCB je dátová štruktúra, ktorá ukladá podrobnosti spojené s jednotlivými procesmi bežiacimi vo vašom systéme.
Tabuľka procesu pozostáva z ID procesu, odkazu na PCB a ďalších užitočných informácií týkajúcich sa procesu. Procesy zombie majú svoje vlastné ID procesu a informácie o správe pamäte. Pretože operačný systém Linux má k dispozícii obmedzený počet ID procesov, iné procesy nemôžu používať PID, kým sa proces zombie nezastaví.
Aj keď jeden alebo dva procesy zombie nespôsobia žiadne prerušenie alebo problémy s výkonom vášho počítača, a veľké množstvo takýchto procesov môže poškodiť pracovný tok vášho systému zaplavením tabuľky procesov a zdrojov.
Čo spôsobuje procesy zombie v systéme Linux?
Aby ste podrobne pochopili základnú príčinu procesu zombie, musíte sa naučiť, ako procesy v systéme Linux začínajú a zastavujú. Operačný systém Linux sleduje všetky spustené procesy a démonov v počítači. The tabuľka procesov je zoznam štruktúr, ktorý obsahuje všetky procesy, ktoré sú momentálne spustené na vašom počítači.
Každá položka procesu v tabuľke procesov pozostáva z odkazu na blok riadenia procesu tohto konkrétneho procesu. DPS ukladá podrobnosti spojené s konkrétnym procesom. Medzi tieto podrobnosti patria:
- Stav procesu: Aktuálny stav procesu
- Číslo procesu: Jedinečné číslo použité na identifikáciu procesu
- Počítadlo programov: Obsahuje informácie týkajúce sa nasledujúcej inštrukcie
- Registre: Zoznam všetkých registrov CPU použitých procesom
- Otvoriť zoznam súborov: Súbory použité procesom
- Informácie o plánovaní CPU: Obsahuje informácie spojené s časom CPU a prostriedkami pridelenými procesu
- Informácie o správe pamäte: Zahŕňa podrobnosti o množstve pamäte použitej v procese
- I / O informácie: Zoznam vstupných alebo výstupných zariadení používaných procesom
Systém Linux používa na opísanie všetkých svojich procesov nasledujúce stavy procesov.
- R: Prebieha proces
- S: Spací proces
- D: Neprerušiteľný proces spánku
- T: Ukončený proces
- Z: Proces zombie
Kedykoľvek proces dokončí pridelenú úlohu, jeho stav procesu sa nastaví ako Zombie alebo Z. Každý proces má nadradený proces, ktorý volá rodinu pomenovaných funkcií počkaj () ktorá čaká na zmenu stavu procesu. Napríklad ak sa stav procesu zmení z Beží do Zombie, počkaj () metóda sa spustí.
The počkaj () metóda zvyčajne vymaže riadiaci blok procesu súvisiaci s týmto zombie procesom a potom odstráni záznam tohto procesu z tabuľky procesu.
Ale niekedy, kvôli zlému vývoju programu, nadradený proces nehovorí počkaj () funkcie. Výsledkom je, že systém neodstráni PCB procesu zombie. Rovnako zostáva nedotknutý záznam tabuľky procesov pre tento konkrétny proces.
To zaručuje zombie procesu nekonečnú životnosť. Pretože systém nemôže proces zabiť, položka procesu sa nikdy neodstráni a PID sa nikdy nezbaví.
Uč sa viac: Spôsoby zabíjania nereagujúcich programov v systéme Linux
Ako nájsť procesy zombie?
Prvým krokom k odstráneniu procesov zombie vo vašom systéme je analýza toho, ktorý proces má Zombie stav procesu. Aj keď nebudete môcť tieto procesy zabiť priamo, pretože ich systém už odstránil z pamäte, môžete zabiť nadradený proces, ktorý je s nimi spojený.
Najprv musíte skontrolovať, či tabuľka procesov vo vašom systéme obsahuje zombie proces. Môžete to ľahko urobiť pomocou hore príkaz. Stačí otvoriť terminál a napísať:
hore
Uvidíte výstup podobný tomuto. Všimnite si počet procesov zombie v hornej časti okna terminálu. Ak je výstup nulový, nemusíte sa ničoho obávať.
Zoznamom informácií súvisiacich s týmito procesmi zombie môžete zobraziť zoznamy príkaz ps s egrep. Egrep je rozšírenie príkazu grep v systéme Linux, ktorý zaobchádza so všetkými vzormi ako s rozšíreným reťazcom regulárneho výrazu.
Súvisiace: Príručka pre začiatočníkov k regulárnym výrazom v jazyku Python
Zadaním nasledujúceho príkazu zobrazíte zoznam všetkých procesov zombie:
ps aux | egrep "Z | zaniknutý"
Vyššie uvedený príkaz bude hľadať riadky, ktoré obsahujú buď Z alebo zaniknutý na výstupe generovanom príkazom ps. Výstup pozostáva zo zoznamu procesov zombie bežiacich vo vašom systéme.
Procesy zabíjania zombie pomocou príkazu kill
Teraz, keď viete, ktoré zombie procesy momentálne požierajú vaše systémové prostriedky, je čas tieto procesy zabiť.
Aj keď najjednoduchší spôsob zabíjania procesov zombie je reštartovanie počítača, niekedy to nie je uskutočniteľná voľba, najmä ak spravujete server.
Ak chcete zabiť procesy zombie bez vypnutia servera, poznačte si ID procesu každého procesu zombie. Z predchádzajúcej časti vidíme, že PID procesu zombie bol 18614. Potom pomocou tohto PID vyhľadajte ID nadradeného procesu.
ps -o ppid = -p 18614
Výkon:
18613
Overte, či existuje ID nadradeného procesu pomocou ps príkaz.
ps -e | grep 18613
Teraz, keď sme potvrdili existenciu nadradeného procesu, je čas ho zabiť. Prejdite okolo -SIGKILL vlajka s zabiť príkaz takto:
sudo kill -SIGKILL 18613
Po zabití nadradeného procesu systém odstráni zombie proces a automaticky ho odstráni z tabuľky procesu.
Efektívne riadenie procesov v systéme Linux
Každý správca systému musí uprednostniť procesy monitorovania bežiace na počítači so systémom Linux. Aj keď procesy zombie nie sú nevyhnutne škodlivé pre váš systém, môžu spôsobiť problémy s výkonom, ak existujú vo veľkom počte.
Ak ste začínajúcim používateľom systému Linux a nemáte tušenie o tom, ako operačný systém Linux riadi procesy, je dobré začať tým, čo sa najskôr dozviete, čo sú procesy.
Porozumenie procesu a pracovných miest je kľúčovým aspektom riešenia problémov s Linuxom. Tu je to, čo potrebujete vedieť.
Prečítajte si Ďalej
- Linux
- Linux
- Spracovanie
Deepesh je juniorský editor pre Linux na MUO. Informačnému obsahu píše na internete už viac ako 3 roky. Vo voľnom čase rád píše, počúva hudbu a hrá na gitare.
Prihlásiť sa ku odberu noviniek
Pripojte sa k nášmu bulletinu s technickými tipmi, recenziami, bezplatnými elektronickými knihami a exkluzívnymi ponukami!
Ešte jeden krok…!
V e-maile, ktorý sme vám práve poslali, potvrďte svoju e-mailovú adresu.