Zombie procesy

Čtení záznamu z živý Vzpomněl jsem si, že na fóru někdo požádal o pomoc, protože jeho systém byl pomalý, některá řešení se zaměřovala na procesy.

Hlavní stavy procesů v systému Linux jsou:
Spící (S) : Procesy, které čekají na své provedení.
Běh (R) : Procesy, které běží.
Čekání (D) : Procesy čekající na dokončení operace vstupu / výstupu.
zombie (Z) : Procesy, které skončily, ale nadále se objevují v tabulce procesů. Mohou být způsobeny chybami programování a mohou být příznakem pomalého nebo problém způsobujícího systému.

Proces Zombie je takový, který nikdy nepřijal signál z nadřazeného procesu, který jej vytvořil, podřízený proces je takový, který má původ v procesu vyšší úrovně známém jako nadřazený proces, který má na starosti odesílání signálů podřízeným procesům tím vygeneroval, aby naznačil, že jejich životnost skončila.

Mohou být způsobeny chybami programování a mohou být příznakem pomalého nebo problém způsobujícího systému. K této situaci obvykle dochází, a to i proto, že vývojář neuvažoval o určité konfiguraci.

Na Wikipedii můžete číst více o těchto procesech.

Provedením vrchního příkazu můžeme v reálném čase vidět procesy, které se v systému provádějí, a bude to indikovat, zda existují nějaké ve stavu zombie, ale neuvádí, který z nich je.

proces

Chcete-li zobrazit všechny procesy, zadejte terminál: ps aux, a vidět pouze zombie: ps -el | grep 'Z'o ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'

alf @ Alf ~ $ ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'

Z 1945

Pokud se při výpisu procesů objeví stav Z, znamená to, že se jedná o zombie, což zase znamená, že aplikace není dobře vyřešena nebo má chyby, protože znalost jejího PID lze eliminovat provedením příkazu podobného v terminálu, v tomto příkladu: 

alf @ Alf ~ $ zabít -9 1945

Když máte mnoho zombie procesů nebo alespoň více než jeden, můžete použít následující příkaz, který je zabije, funguje to jen na to, pokud jej spustíte bez toho, aby se zombie procesy nestaly:

alf @ Alf ~ $ sudo kill -HUP `ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]' | awk '{print $ 2}' ''

pozdravy


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   řádný řekl

    🙁

  2.   Oskar řekl

    Díky, velmi dobrý příspěvek, chystám se uložit příkazy k provádění pravidelných ověření.

  3.   Dělat si srandu z řekl

    Díky, pěkný článek.

  4.   MSX řekl

    Několik vysvětlení týkajících se vašeho článku:

    Pojem „Zombie proces“ je technicky nevhodný a ti z nás, kteří mají malé zkušenosti s GNU / Linuxem, by se měli vyhnout jeho používání, protože sám o sobě neprobíhá žádný proces, ale jedná se pouze o odkaz na proces, který již v systému neexistuje a nezveřejnil svůj identifikátor.

    „Proces zombie“ je ve skutečnosti položka v mapovací tabulce identifikátoru procesu (deskriptor procesu), právě taková, takže nespotřebovává prostředky nad rámec několika bajtů paměti, které systém používá ke sledování tabulka procesů.

    Jediným problémem, který může existovat s deskriptory registru duchů (nebo zombie), je ten, že pokud se objeví příliš rychle, mohli by teoreticky obsadit celou alokační tabulku deskriptorů procesu a nechat systém bez prostoru pro nové záznamy, takže by to mohlo být nemožné spustit nové programy - zaznamenávat jejich procesy - případně zavěsit stroj.

    To je však téměř nemožné, protože ve 32bitových systémech existuje 32767 prostorů pro registraci procesů (zřídka nebo nikdy nepoužívaných) a dvakrát v 64bitovém systému.

    Jediným způsobem, jak způsobit zhroucení systému se špatně odstraněnými mrtvými procesy, je vytvořit procesy a rychle je zabít bez řádného vyčištění deskriptoru procesu (tj. Vytvoření „zombie procesů“), ale přiznejme si to, pokud někdo chce zavěsit systém existuje mnohem více přímých cest. začít rychle vytvářet nové procesy exponenciálním způsobem, který zablokuje systém a zablokuje jej; jedním ze způsobů, jak toho dosáhnout pomocí vidlicové bomby:

    : () {: |: &};:

    Správnou konfigurací souboru /etc/security/limits.conf můžete udělat systém relativně odolný vůči vidlicové bombě, i když je třeba vzít v úvahu, že čím více omezíme možnost vytváření nových procesů, budeme moci na našem systému současně spouštět méně aplikací Je to však platný nástroj pro všechny paranoidní sysadminy, kteří chtějí mít nad svými systémy velmi jemnou kontrolu!

    Tento článek obsahuje dobré informace o neplatných deskriptorech procesů:
    http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
    A v tom je jasné vysvětlení, jak funguje vidlicová bomba: http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work

    Salu2

    1.    jotaele řekl

      msx: «Pojem„ proces Zombie “je technicky nevhodný a ti z nás, kteří mají malé zkušenosti s GNU / Linux, by se měli vyhnout jeho používání ...» Ha ha ha. Existuje jen něco většího než vaše pýcha: váš nevkus. Hej, to, co jsi udělal, je ve špatném vkusu, pokud chceš přednášet, mít nějakou na fakultě nebo si vytvořit svůj vlastní blog a napsat, co chceš, ale přijít sem opravit byt na dobrý Alf je opravdu ve špatném vkusu.

      1.    Ferdinand Rojas řekl

        Pravda se mi zdála jako docela zajímavý komentář. Mnohem víc než příspěvek

  5.   platonov řekl

    děkuji velmi zajímavě.

  6.   hnije87 řekl

    vynikající článek díky

  7.   Alf řekl

    MSX
    «Pojem„ Zombie proces “je technicky nevhodný a ti z nás, kteří mají malou zkušenost s GNU / Linuxem, by se měli vyhnout jeho používání»

    Budeme muset upozornit vývojáře, protože jak uvidíte, používá se také pojem zombie, tam jsem si ho přečetl na konzole.

    pozdravy

  8.   Město řekl

    Gratuluji, velmi dobrý článek, vždy jsem měl pochybnosti, že jsou to PZ, ale nikdy jsem neměl čas to prošetřit, nyní přejdu na stránku a narazím na odpověď díky .......

  9.   truko22 řekl

    V KDE s aktivitami control + escape systém zhasne a my můžeme ty zombie rychle zabít.

  10.   Déšť řekl

    Oprava, je to ZOMBIE, nikoli ZOMBIE proces
    Zombie je v angličtině
    Zombi ve španělštině

  11.   rys ostrovid řekl

    Luxusní, děkuji!

  12.   Roberto řekl

    Za prvé, pojem proces zombie se zdá být naprosto správný. Termín je také nejméně důležitý.
    Jde o to, že jak naznačuje msx, a stejná wikipedia (četl jsem článek) je proces zombie opravdu mrtvý.
    «Po dokončení procesu bude dereferencována veškerá jeho paměť a přidružené zdroje, aby mohly být použity jinými procesy. Položka procesu v tabulce procesů stále zůstává »
    To znamená, že proces již nezabírá systémové prostředky, proto je zatížení systému minimální, jak vysvětluje msx.
    Jediná věc, kterou má, je neplatný záznam v tabulce procesů ... což, pokud jich jsou tisíce, může jít o zátěž (koneckonců procesor musí číst tabulku procesů a četl by spoustu zbytečných informací) kromě toho, že odráží špatné programovací postupy (někdo dělá špatně vyrobené aplikace).
    Samotné vysvětlení příspěvku však není tak správné a správné by bylo vysvětlení dané msx.