GNU/Linux >> Znalost Linux >  >> Linux

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

Pokud jste běžným uživatelem Linuxu, určitě jste se setkali s pojmem ‚Zombie Processes '. Jaké jsou tedy zombie procesy? Jak se vytvářejí? Jsou škodlivé pro systém? Jak tyto procesy zabiju? Pokračujte ve čtení odpovědí na všechny tyto otázky.

Co jsou zombie procesy?

Všichni tedy víme, jak procesy fungují. Spustíme program, spustíme náš úkol a jakmile náš úkol skončí, proces ukončíme. Jakmile proces skončí, musí být odstraněn z tabulky procesů.

Aktuální procesy můžete vidět v ‚System-Monitor‘.

Nahraďte pid id nadřazeného procesu, aby nadřazený proces odstranil všechny podřízené procesy, které jsou mrtvé a dokončené. Představte si to takto:"Najdete mrtvé tělo uprostřed silnice, zavoláte rodině mrtvého těla a oni to tělo odnesou z cesty." Ale mnoho programů není naprogramováno dostatečně dobře, aby odstranily tyto dětské zombie, protože pokud by byly, neměli byste tyto zombie na prvním místě. Takže jediná věc, která zaručeně odstraní Child Zombies, je zabití rodiče.

Někdy však některé z těchto procesů zůstanou v tabulce procesů i po dokončení.

Někdy však některé z těchto procesů zůstanou v tabulce procesů i po dokončení.

Takže tyto procesy, které dokončily svou životnost, ale stále existují v tabulce procesů, se nazývají ‚Zombie procesy‘.

A jak přesně jsou vytvořeny?

Kdykoli spustíme program, vytvoří nadřazený proces a mnoho podřízených procesů. Všechny tyto podřízené procesy využívají prostředky, jako je paměť a CPU, které jim přidělilo jádro.

Jakmile tyto podřízené procesy dokončí provádění, odešlou volání Exit a zemřou. Toto volání Exit musí přečíst nadřazený proces, který později zavolá příkaz wait, aby přečetl exit_status podřízeného procesu, aby mohl být podřízený proces odstraněn z tabulky procesů. Pokud rodič správně přečte volání Exit odeslané podřízeným procesem, bude proces odstraněn z tabulky procesů.

Pokud však rodič nedokáže přečíst volání ukončení z podřízeného procesu, podřízený proces, který již dokončil své provádění a nyní je mrtvý, nebude z tabulky procesů odstraněn.

Jsou zombie procesy škodlivé pro systém?

Ne. Protože zombie proces nedělá žádnou práci, nevyužívá žádné zdroje ani neovlivňuje žádný jiný proces, není na škodu mít proces zombie. Ale protože exit_status a další informace o procesu z tabulky procesů jsou uloženy v paměti RAM, příliš mnoho zombie procesů může být někdy problém. Představte si to takto:

Jste vlastníkem stavební firmy. Vyplácíte denní mzdu všem svým zaměstnancům v závislosti na tom, jak pracují. Dělník přichází na stavbu každý den, jen tam sedí, nemusíte mu platit, žádnou práci nedělá. Prostě přichází každý den a sedí, to je ono!“

Takový pracovník je živým příkladem procesu zombie. Ale, pokud máte hodně zombie dělníků, vaše staveniště bude přeplněné a pro lidi, kteří skutečně pracují, to může být obtížné.

Jak tedy najít zombie procesy?

Spusťte terminál a zadejte následující příkaz – ps aux | grep Z Nyní získáte podrobnosti o všech zombie procesech v tabulce procesů.

Jak zabít zombie procesy?

Normálně zabíjíme procesy příkazem SIGKILL, ale zombie procesy jsou již mrtvé. Nemůžete zabít něco, co je již mrtvé. Takže napíšete tento příkaz – kill -s SIGCHLD pid ​Nahraďte pid id nadřazeného procesu, aby nadřazený proces odstranil všechny podřízené procesy, které jsou mrtvé a dokončené. Představte si to takto:

"Najdete mrtvé tělo uprostřed silnice, zavoláte rodině mrtvého těla a oni to tělo odnesou ze silnice."

Ale mnoho programů není naprogramováno dostatečně dobře, aby odstranily tyto dětské zombie, protože pokud by byly, neměli byste tyto zombie na prvním místě. Takže jediná věc, která zaručeně odstraní Child Zombies, je zabití rodiče.


Linux
  1. Jak zabít proces zombie na Linuxu

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

  3. Jak zjistit, kdo je přihlášen ve vašem systému a co dělá

  1. Jak zabít proces, jehož rodič je init?

  2. Co jsou linuxové procesy, vlákna, lehké procesy a stav procesu

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

  1. Linux:Najděte a zabijte zombie procesy

  2. Jak zabít zombie proces

  3. Najděte (a zabijte) staré procesy