GNU/Linux >> Znalost Linux >  >> Linux

Jak najít a zabít zombie proces v Linuxu

Stručně:Toto je rychlý tip, jak najít zombie procesy v Linuxu a následně je zabít. Dozvíte se také něco o procesech a zombie procesech.

Než se dozvíte o procesu Zombie, dovolte mi připomenout, co je proces v Linuxu.

Stručně řečeno, proces je běžící instance programu ve výkonu. Může to být popředí (interaktivní proces) nebo pozadí (nikoli interaktivní nebo automatický proces). Může to být nadřazený (tvůrce jiných procesů za běhu) nebo podřízený (proces vytvořený ostatními) proces.

V Linuxu, kromě prvního procesu init (nebo systemd) s PID 0, má každý další proces nadřazený proces. Procesy mají také své vlastní podřízené procesy.

nevěříš mi? Použijte pstree příkaz v terminálu, abyste se podívali na strom procesů, abyste viděli „rodokmen“ procesů vašeho systému.

Co je to zombie proces v Linuxu?

Když podřízený proces zemře, nadřazený proces je informován, aby mohl provést nějaké vyčištění, jako je uvolnění paměti atd. Podřízený proces však přejde do stavu zombie, pokud si nadřazený proces není vědom své smrti. Pro rodiče dítě stále existuje, ale podřízený proces je ve skutečnosti mrtvý. Takto se vytvářejí zombie procesy (také známé jako zaniklé procesy) a zůstávají v systému.

Zde je skvělý vtipný pohled na proces zombie od Turnoff.us:

Opravdu se musíte starat o zombie procesy?

Zde je důležité říci, že zombie procesy nejsou tak nebezpečné, jak jejich název může znít.

Problém může nastat, pokud má váš systém omezenou RAM nebo pokud RAM zabírá příliš mnoho zombie procesů. Většina linuxových procesů může mít také maximální PID nastaveno na 32768. Pokud nejsou k dispozici žádná ID pro jiné produktivní úlohy, váš systém může selhat.

To se stává zřídka, ale je to možné, zvláště pokud špatně kódovaný program začne vyvolávat četné zombie procesy.

V takovém případě by bylo dobré najít a zabít proces zombie.

Jak najít zombie procesy?

Proces v Linuxu může mít jeden z následujících stavů:

  • D =nepřerušitelný spánek
  • I =nečinný
  • R =běh
  • S =spící
  • T =zastaveno signálem řízení úlohy
  • t =zastaveno ladicím programem během trasování
  • Z =zombie

Ale kde můžete vidět procesy a jejich příslušný stav? Jedním snadným způsobem je použít terminál a příkaz top.

Jak můžete vidět na výše uvedeném snímku obrazovky, existuje celkem 250 úloh (nebo procesů), 1 běží, 248 procesů spí a 1 je ve stavu zombie.

Nyní vyvstává otázka, jak zabít proces zombie?

Jak najít a zabít proces zombie? Lze zabít proces zombie?

Proces zombie je již mrtvý. Jak zabijete již mrtvý proces?

V zombie filmech střílíte zombie do hlavy nebo ji spalujete. To zde není možnost. Můžete spálit svůj systém, abyste zabili proces zombie, ale to není možné řešení 😉

Někteří lidé navrhují posílat signál SIGCHLD nadřazenému procesu. Ale je pravděpodobnější, že bude ignorována. Další možností, jak zabít zombie proces, je zabít jeho nadřazený proces. Zní to brutálně, ale je to jediný jistý způsob, jak zabít zombie procesy.

Nejprve si tedy uveďme seznam zombie procesů, abychom znali jejich ID. Toho lze dosáhnout pomocí příkazu ps, jako je tento v terminálu.

ps ux | awk '{if($8=="Z+") print}'

8. sloupec ve výstupu příkazu ps ux zobrazuje stav procesu. Žádáte o vytištění všech odpovídajících řádků, kde je stav procesu Z+ (označující stav zombie).

Jakmile identifikujete jeho ID procesu, získáme ID jeho nadřazeného procesu.

ps -o ppid= -p <child_id>

Případně můžete zkombinovat dva výše uvedené příkazy následujícím způsobem, kde přímo poskytuje PID procesu zombie a PID jeho nadřazeného procesu.

ps -A -ostat,pid,ppid | grep -e '[zZ]'

Zde získáte ID nadřazeného procesu, takže nakonec proces ukončete zadáním příkazového řádku s příslušným ID procesu získaným dříve.

kill -9 <parent_process_ID>

Zda je proces zombie zabit nebo ne, můžete ověřit opětovným spuštěním příkazu ps nebo dokonce příkazu top.

Gratuluji! Nyní víte, jak eliminovat zombie procesy.

Se vstupy od Abhisheka Prakashe.

Původní článek


Linux
  1. Jak zabít proces zombie na Linuxu

  2. Linux:Najděte a zabijte zombie procesy

  3. Jak zabít zombie proces

  1. Co jsou zombie procesy a jak najít a zabít zombie procesy?

  2. Jak zabít proces v Linuxu pomocí příkazu?

  3. Jak najdu a ukončím proces v Ubuntu

  1. Jak zabít proces nebo zastavit program v Linuxu

  2. Jak zabít proces v Linuxu? Příkazy k ukončení

  3. Jak pozastavit/obnovit proces v Linuxu