Proces zombie. Ne každý slyšel o tomto zajímavém, ale děsivém slově týkajícím se operačního systému Linux. V osobním počítači nemusí být procesy zombie pro běžného uživatele hrozbou, ale pokud jde o servery Linux, musí být tyto procesy identifikovány a zastaveny.

Takové procesy mohou způsobit problémy s tabulkou procesů vašeho systému a zase narušit správné fungování vašeho stroje. Proto v tomto článku budeme podrobně diskutovat o zombie procesech spolu s komplexním průvodcem o hledání a zabíjení zombie procesů na stroji s Linuxem.

Co jsou procesy zombie?

Ale předtím je důležité vědět, jaké procesy zombie ve skutečnosti jsou. Nejsou to nic jiného než mrtvé a zaniklé procesy, které zabírají místo na tabulce systémových procesů. A blok řízení procesu nebo PCB je datová struktura, která ukládá podrobnosti spojené s jednotlivými procesy běžícími ve vašem systému.

Tabulka procesu se skládá z ID procesu, odkazu na PCB a dalších užitečných informací souvisejících s procesem. Procesy zombie mají vlastní ID procesu a informace o správě paměti. Vzhledem k tomu, že operační systém Linux má k dispozici omezený počet ID procesů, nemohou ostatní procesy používat PID, dokud se proces zombie nezastaví.

instagram viewer

Ačkoli jeden nebo dva procesy zombie nezpůsobí narušení nebo problémy s výkonem v počítači, a velké množství takových procesů může poškodit pracovní tok vašeho systému zaplavením tabulky procesů a zdroje.

Co způsobuje procesy zombie v systému Linux?

Abyste podrobně pochopili základní příčinu procesu zombie, musíte se naučit, jak procesy v Linuxu začínají a končí. Operační systém Linux sleduje všechny běžící procesy a démony v počítači. The tabulka procesů je seznam struktur, který obsahuje všechny procesy, které aktuálně běží na vašem počítači.

Každá položka procesu v tabulce procesů sestává z odkazu na blok řízení procesu konkrétního procesu. PCB ukládá podrobnosti spojené s daným procesem. Mezi tyto podrobnosti patří:

  1. Stav procesu: Aktuální stav procesu
  2. Číslo procesu: Jedinečné číslo použité k identifikaci procesu
  3. Počítadlo programu: Obsahuje informace týkající se dalšího pokynu
  4. Registry: Seznam všech registrů CPU použitých procesem
  5. Otevřít seznam souborů: Soubory používané procesem
  6. Informace o plánování CPU: Obsahuje informace spojené s časem CPU a prostředky přidělenými procesu
  7. Informace o správě paměti: Zahrnuje podrobnosti o množství paměti použité procesem
  8. I / O informace: Seznam vstupních nebo výstupních zařízení využívaných procesem

Linux používá k popisu všech svých procesů následující stavy procesů.

  • R: Probíhá proces
  • S: Proces spánku
  • D: Nepřerušitelný proces spánku
  • T: Ukončený proces
  • Z: Proces zombie

Kdykoli proces dokončí přiřazenou úlohu, jeho stav procesu se nastaví jako Zombie nebo Z. Každý proces má nadřazený proces, který volá rodinu pojmenovaných funkcí Počkejte() který čeká na změnu stavu procesu. Například pokud se stav procesu změní z Běh na ZombiePočkejte() bude spuštěna metoda.

The Počkejte() metoda obvykle odstraní blok řízení procesu související s tímto procesem zombie a poté odebere záznam tohoto procesu z tabulky procesů.

Ale někdy kvůli špatnému vývoji programu nadřazený proces nevolá Počkejte() funkce. Výsledkem je, že systém neodstraní PCB procesu zombie. Položka tabulky procesu pro tento konkrétní proces také zůstane neporušená.

To zaručuje zombie procesu nekonečnou životnost. Protože systém nemůže proces zabít, položka procesu se nikdy neodstraní a PID se nikdy nezbaví.

Více informací: Způsoby, jak zabít nereagující programy v systému Linux

Jak najít procesy zombie?

Prvním krokem k odstranění zombie procesů ve vašem systému je analýza, který proces má Zombie stav procesu. I když tyto procesy nebudete moci zabít přímo, protože je systém již odstranil z paměti, můžete zabít nadřazený proces s nimi spojený.

Nejprve musíte zkontrolovat, zda tabulka procesů vašeho systému obsahuje proces zombie. Můžete to udělat snadno pomocí horní příkaz. Jednoduše otevřete terminál a zadejte:

horní

Uvidíte výstup podobný tomuto. Všimněte si počtu zombie procesů v horní části okna terminálu. Pokud je výstup nulový, nemusíte se ničeho obávat.

Můžete zobrazit informace související s těmito procesy zombie potrubím příkaz ps s egrep. Egrep je rozšíření příkazu grep v Linuxu, které se všemi vzory zachází jako s rozšířeným řetězcem regulárního výrazu.

Příbuzný: Průvodce pro začátečníky k regulárním výrazům v Pythonu

Zadejte následující příkaz pro zobrazení seznamu všech procesů zombie:

ps aux | egrep "Z | zaniklý"

Výše uvedený příkaz vyhledá řádky, které obsahují buď Z nebo zaniklý ve výstupu generovaném příkazem ps. Výstup se skládá ze seznamu procesů zombie spuštěných ve vašem systému.

Procesy zabíjení zombie pomocí příkazu kill

Nyní, když víte, které procesy zombie aktuálně pohlcují vaše systémové prostředky, je čas tyto procesy zabít.

Nejjednodušší způsob, jak zabíjet procesy zombie, je restartování počítače, někdy to však není proveditelná možnost, zvláště pokud spravujete server.

Chcete-li zabít procesy zombie bez vypnutí serveru, poznamenejte si ID procesu jakéhokoli procesu zombie. Z předchozí části vidíme, že PID procesu zombie byl 18614. Poté použijte tento PID k vyhledání ID nadřazeného procesu.

ps -o ppid = -p 18614

Výstup:

18613

Ověřte, zda ID nadřazeného procesu existuje pomocí ps příkaz.

ps -e | grep 18613

Nyní, když jsme potvrdili existenci nadřazeného procesu, je čas ho zabít. Předat -SIGKILL vlajka s zabít příkaz takto:

sudo kill - SIGKILL 18613

Jakmile zabijete nadřazený proces, systém odstraní zombie proces a automaticky jej odebere z tabulky procesu.

Efektivní správa procesů v systému Linux

Každý správce systému musí upřednostnit monitorovací procesy spuštěné na počítači se systémem Linux. Ačkoli procesy zombie nemusí nutně škodit vašemu systému, mohou způsobit problémy s výkonem, pokud existují ve velkém počtu.

Pokud jste začínajícím uživatelem systému Linux a nemáte ponětí, jak operační systém Linux spravuje procesy, je dobré začít tím, co se dozvíte, jaké jsou procesy jako první.

E-mailem
Co je to proces v Linuxu?

Porozumění procesu a úlohám je klíčovým aspektem zvládnutí Linuxu. Tady je to, co potřebujete vědět.

Přečtěte si další

Související témata
  • Linux
  • Linux
  • zpracovává se
O autorovi
Deepesh Sharma (45 článků publikováno)

Deepesh je Junior Editor pro Linux na MUO. Píše informační obsah na internetu již více než 3 roky. Ve volném čase rád píše, poslouchá hudbu a hraje na kytaru.

Více od Deepesh Sharma

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji s technickými tipy, recenzemi, bezplatnými elektronickými knihami a exkluzivními nabídkami!

Ještě jeden krok…!

V e-mailu, který jsme vám právě poslali, potvrďte svou e-mailovou adresu.

.