Zombie procesy

Čítanie záznamu z živý Spomenul som si, že na fóre niekto požiadal o pomoc, pretože jeho systém bol pomalý, niektoré z riešení sa zameriavali na procesy.

Hlavné stavy procesov v systéme Linux sú:
Spiace (S) : Procesy, ktoré čakajú na svoje vykonanie.
Beh (R) : Procesy, ktoré bežia.
Čakanie (D) : Procesy čakajúce na dokončenie operácie vstupu / výstupu.
zombie (Z) : Procesy, ktoré sa skončili, ale naďalej sa objavujú v tabuľke procesov. Môžu byť spôsobené programovacími chybami a môžu byť príznakom pomalého alebo problém spôsobujúceho systému.

Proces Zombie je proces, ktorý nikdy neprijal signál z nadradeného procesu, ktorý ho vytvoril. Podradený proces je taký, ktorý má pôvod v procese na vyššej úrovni známom ako nadradený proces, ktorý je zodpovedný za zasielanie signálov do podradených procesov generovaných to znamená, že ich životnosť sa skončila.

Môžu byť spôsobené programovacími chybami a môžu byť príznakom pomalého alebo problém spôsobujúceho systému. K tejto situácii obvykle dochádza, aj preto, že vývojár neprihliadal na určitú konfiguráciu.

Vo Wikipédii môžete čítať viac o týchto procesoch.

Po vykonaní horného príkazu môžeme v reálnom čase vidieť procesy, ktoré v systéme bežia, a bude to indikovať, či nejaké existujú v stave zombie, ale nebude to znamenať, ktorý z nich je.

proces

Ak chcete zobraziť všetky procesy, zadajte terminál: ps aux, a vidieť iba 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

Ak sa pri vypisovaní procesov objaví stav Z, znamená to, že sa jedná o zombie, čo zase znamená, že aplikácia nie je dobre vyriešená alebo obsahuje chyby, pričom znalosť jej PID možno eliminovať vykonaním príkazu podobného príkazu, v termináli, v tomto príklade: 

alf @ Alf ~ $ zabiť -9 1945

Keď máte veľa zombie procesov alebo aspoň viac ako jeden, môžete použiť nasledujúci príkaz, ktorý ich zabije, funguje to iba vtedy, ak ich spustíte bez toho, aby zombie procesy prebiehali, nič sa nestane:

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

pozdravy


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   riadny dijo

    🙁

  2.   Oskar dijo

    Ďakujem, veľmi dobrý príspevok, chystám sa uložiť príkazy na vykonávanie pravidelných overení.

  3.   Robiť si srandu z dijo

    Ďakujem, pekný článok.

  4.   MSX dijo

    Niekoľko vysvetlení týkajúcich sa vášho článku:

    Pojem „proces zombie“ je technicky nevhodný a tí z nás, ktorí majú malé skúsenosti s GNU / Linuxom, by sa mali vyhnúť jeho používaniu, pretože sám o sebe neprebieha žiadny proces, ale jedná sa iba o odkaz na proces, ktorý už v systéme neexistuje. a nezverejnil svoj identifikátor.

    „Proces zombie“ je vlastne záznam v mapovacej tabuľke identifikátora procesu (deskriptor procesu), teda taký, ktorý nespotrebováva zdroje nad pár bajtov pamäte, ktoré systém využíva na sledovanie tabuľky procesu.

    Jediným problémom, ktorý môže existovať s deskriptormi registra duchov (alebo zombie), je ten, že ak sa objavia príliš rýchlo, mohli by teoreticky obsadiť celú alokačnú tabuľku deskriptorov procesov a ponechať tak systému miesto pre nové záznamy, takže by bolo potenciálne nemožné spustiť nové programy -zaznamenávajú svoje procesy- prípadne zavesia stroj.

    To je však takmer nemožné, pretože v 32-bitových systémoch existuje 32767 64 priestorov na registráciu procesov (zriedka alebo nikdy nepoužívaných) a dvakrát viac v XNUMX-bitových systémoch.

    Jediným spôsobom, ako zastaviť systém so zablokovanými mŕtvymi procesmi, je vytvoriť procesy a rýchlo ich zabiť bez správneho vyčistenia deskriptora procesov (tj. Vytvorenia „zombie procesov“), ale povedzme si na rovinu, ak chce niekto zavesiť systému existuje oveľa viac priamych spôsobov. začať rýchlo vytvárať nové procesy exponenciálnym spôsobom, ktoré zaseknú systém a zavesia ho; jedným zo spôsobov, ako to dosiahnuť pomocou vidlicovej bomby:

    : () {: |: &};:

    Správnou konfiguráciou /etc/security/limits.conf urobíte systém relatívne odolným voči vidlicovej bombe, aj keď je potrebné vziať do úvahy, že čím viac obmedzíme možnosť vytvárania nových procesov, budeme môcť spustiť menej aplikácií súčasne na našom systéme. Je to však platný nástroj pre všetkých paranoidných správcov, ktorí chcú mať veľmi jemnú kontrolu nad svojimi systémami!

    Tento článok obsahuje dobré informácie o neplatných deskriptoroch procesov:
    http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
    A v tomto je jasné vysvetlenie toho, ako funguje vidlicová bomba: http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work

    Salu2

    1.    jotaele dijo

      msx: «Pojem„ proces zombie “je technicky nevhodný a tí z nás, ktorí majú malé skúsenosti s GNU / Linux, by sa mali vyhýbať jeho používaniu ...» Ha ha ha. Existuje iba niečo väčšie ako vaša pýcha: váš zlý vkus. Hej, to, čo si urobil, je v zlom vkusu. Ak chceš prednášať, prednášať si na fakulte alebo si vytvoriť vlastný blog a napísať, čo chceš, ale prísť sem opraviť byt na dobrého Alfa je skutočne nevkusný. .

      1.    Ferdinand Rojas dijo

        Pravda sa mi zdala celkom zaujímavým komentárom. Oveľa viac ako príspevok

  5.   platonov dijo

    dakujem velmi zaujimave.

  6.   Hnije87 dijo

    vynikajúci článok vďaka

  7.   Alf dijo

    MSX
    «Pojem„ proces zombie “je technicky nevhodný a tí z nás, ktorí majú malé skúsenosti s GNU / Linux, by sa mali vyhnúť jeho použitiu»

    Budeme musieť upozorniť vývojárov, keďže ako uvidíte, používa sa aj výraz zombie, tam som si ho prečítal na konzole.

    pozdravy

  8.   Mesto dijo

    Gratulujem, veľmi dobrý článok, vždy som mal pochybnosti, že sú to PZ, ale nikdy som nemal čas to prešetrovať, teraz prejdem na stránku a narazím na odpoveď vďaka .......

  9.   truko22 dijo

    V KDE s aktivitami control + escape systém zhasne a my môžeme tých zombie rýchlo zabiť.

  10.   Dážď dijo

    Oprava, je to ZOMBIE, nie ZOMBIE proces
    Zombie je v angličtine
    Zombi v španielčine

  11.   lynx dijo

    Luxus, ďakujem!

  12.   Roberto dijo

    Po prvé, pojem proces zombie sa javí ako úplne správny. Pojem je tiež najmenej dôležitý.
    Ide o to, že ako naznačuje msx a rovnaká wikipedia (čítal som článok), proces zombie je skutočne mŕtvy.
    «Po dokončení procesu bude dereferencovaná všetka jeho pamäť a súvisiace zdroje, aby ich bolo možné použiť v iných procesoch. Položka procesu v tabuľke procesov stále zostáva »
    To znamená, že proces už nezaberá systémové prostriedky, preto je zaťaženie systému minimálne, čo vysvetľuje server msx.
    Jediná vec, ktorú má, je neplatný záznam v tabuľke procesov ... čo, ak ich sú tisíce, by to mohlo byť načítanie (koniec koncov, procesor musí prečítať tabuľku procesov a prečítal by veľa zbytočných informácií) okrem toho, že odráža zlé programovacie postupy (niekto robí zle vyrobené aplikácie).
    Samotné vysvetlenie príspevku však nie je také správne a správne by bolo vysvetlenie uvedené v msx.