GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak zabít zombie procesy v Ubuntu 20.04 LTS

Zombie nebo zaniklý proces v Linuxu je proces, který byl dokončen, ale jeho záznam stále zůstává v tabulce procesů kvůli nedostatečné shodě mezi nadřazeným a podřízeným procesem. Nadřazený proces obvykle kontroluje stav svých podřízených procesů pomocí funkce wait(). Po dokončení podřízeného procesu funkce čekání signalizuje rodiči, aby zcela opustil proces z paměti. Pokud však rodič nedokáže zavolat funkci čekání pro některého ze svých potomků, podřízený proces zůstane v systému živý jako mrtvý nebo zombie proces. Tyto zombie procesy se mohou nahromadit ve velkém množství ve vašem systému a ovlivnit jeho výkon. V takovém případě možná budete muset tyto zombie zabít ručně pomocí způsobů a příkazů popsaných v tomto tutoriálu.

Zobrazení zombie procesů

Výkon svého systému můžete zkontrolovat pohledem na různé procesy běžící ve vašem systému, včetně procesů zombie měnících efektivitu. Ubuntu vám umožňuje zobrazit tyto procesy následujícím způsobem:

  • Prostřednictvím grafického uživatelského rozhraní
  • Prostřednictvím příkazového řádku

Prostřednictvím GUI

Chcete-li graficky zobrazit jakékoli zombie procesy spuštěné ve vašem systému, otevřete Monitor systému nástroj prostřednictvím vašeho Ubuntu Dash. Na následujícím snímku obrazovky mého System Monitor můžete vidět, že v mém systému běží dva zombie. Je také možné, že počet zombie procesů ve vašem systému může být menší nebo více než těch, které běží na mém.

Prostřednictvím příkazového řádku

nahoře zobrazí podrobný pohled na procesy běžící ve vašem systému spolu s pamětí a prostředky CPU, které využívají. Poskytuje také informace o všech zombie procesech běžících ve vašem systému. Otevřete Terminál stisknutím Ctrl+Alt+T a poté zadejte top . Po spuštění tohoto příkazu jsem dostal následující výstup.

$ nahoru

Na druhém řádku můžete vidět, že v mém systému běží 1 zombie proces.

Pokud chcete další podrobnosti o procesu zombie, použijte následující příkaz:

$ ps axo stat,ppid,pid,comm | grep -w defunct

Tento příkaz vám dá stav, parentID, ID procesu, program, který spouští proces zombie (fiktivní program s názvem ‚zombie‘ v mém systému). Zaniklá vlajka vám říká, že se jedná o mrtvý, zombie proces.

Zabíjení zombie-procesu

Nejprve pochopíme, jak zombie procesy ohrožují výkon našeho systému. Je důležité se naučit, že zombie jsou mrtvé a většinou dokončené procesy, které neberou paměť ani zdroje CPU. Každý z těchto procesů má však přiřazeno jedinečné ID procesu, které pochází z omezené skupiny PID vyhrazených pro váš procesor. Pokud se shromáždí velký počet zombie, sežerou většinu PID fondu a nové procesy se nebudou moci spustit kvůli chybějícímu ID procesu.

Malý počet zaniklých programů okupujících váš systém nepředstavuje velkou hrozbu, ale to znamená, že je jejich nadřazené programy nebyly schopny odvolat kvůli chybě nebo chybějící funkci wait().

Když nadřazený proces nebyl schopen zavolat funkci wait() automaticky, musíme nadřazenému procesu ručně signalizovat, aby spustil funkci čekání na všech svých potomcích, aby bylo možné zavolat zpět ty s úplným stavem. Můžeme to udělat spuštěním příkazu SIGCHLD. Když to nefunguje, můžeme ručně zabít nadřazený proces, aby byly zabity i všechny jeho zombie děti, čímž se uvolní ID procesu pro nové procesy.

Procesy zombie můžete zabít následujícími způsoby:

  • Prostřednictvím grafického uživatelského rozhraní
  • Prostřednictvím příkazového řádku

Prostřednictvím GUI

Proces zombie můžete graficky zabít pomocí nástroje System Monitor Utility takto:

  1. Otevřete Sledování systému nástroj prostřednictvím Ubuntu Dash.
  2. Vyhledejte výraz Zombie prostřednictvím Vyhledávání tlačítko.
  3. Vyberte proces zombie, klikněte pravým tlačítkem a vyberte možnost Zabít z nabídky.

Proces zombie bude z vašeho systému zabit.

Prostřednictvím příkazového řádku

Poté, co zjistíte, že na vašem systému běží nějaké zombie procesy prostřednictvím příkazu top, zobrazte podrobnosti o procesech.

Obvyklým způsobem je použít následující příkaz, který signalizuje rodičovskému procesu zombie, aby příkaz ukončil.

$ kill -s SIGCHLD PID

Tento příkaz nemusí v několika případech fungovat, protože ne všechny nadřazené procesy jsou správně naprogramovány, aby bylo možné kontrolovat podřízené procesy. V takovém případě můžete nadřazený proces ukončit pomocí následujícího příkazu:

$ sudo kill -9 3376

Když tímto způsobem zabijete všechny zombie procesy a spustíte příkaz top, uvidíte, že na vašem systému již neběží žádné zombie procesy:

Po práci s tímto tutoriálem můžete optimalizovat svůj operační systém vyhledáním jakýchkoli zombie procesů ve vašem systému a jejich ručním zabíjením pomocí příkazového řádku nebo grafického uživatelského rozhraní. Tato akce uvolní ID procesů pro nové procesy, které chcete na svém systému spouštět.


Ubuntu
  1. Jak zabít proces zombie na Linuxu

  2. Jak upgradovat Ubuntu 15.10 na Ubuntu 16.04 LTS

  3. Jak upgradovat Ubuntu 14.04 LTS na Ubuntu 16.04 LTS

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

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

  3. Jak zabít zombie proces

  1. Jak upgradovat Ubuntu 18.04 LTS na Ubuntu 20.04 LTS

  2. Jak zabít zombie procesy v Linuxu

  3. Jak najít a zabít zombie procesy v CentOS 8