Procese zombie

Citind o intrare din plin de viață Mi-am amintit că într-un forum cineva a cerut ajutor deoarece sistemul lor era lent, unele dintre soluții s-au concentrat pe procese.

Principalele stări ale proceselor în Linux sunt:
Dormit (S) : Procese care își așteaptă rândul să fie executate.
Alergare (R) : Procese care rulează.
În așteptare (D) : Procese care așteaptă finalizarea unei operații de intrare / ieșire.
Zombie (Z) : Procese care s-au încheiat, dar continuă să apară în tabelul de procese. Ele pot fi cauzate de erori de programare și pot fi un simptom al unui sistem lent sau cauzator de probleme.

Un proces Zombie este unul care nu a primit niciodată un semnal de la procesul părinte care l-a creat, un proces copil este unul care își are originea într-un proces de nivel superior cunoscut sub numele de procesul părinte care are sarcina de a trimite semnalele către procesele copil generat de acesta pentru a indica faptul că durata lor de viață sa încheiat.

Ele pot fi cauzate de erori de programare și pot fi un simptom al unui sistem lent sau cauzator de probleme. Această situație apare de obicei, de asemenea, deoarece o anumită configurație nu a fost luată în considerare de către dezvoltator.

În Wikipedia poți citiți mai mult despre aceste procese.

Executând comanda de sus putem vedea în timp real procesele care se execută în sistem și va indica dacă există într-o stare zombie, dar nu indică care.

proces

Pentru a vedea toate procesele, tastați terminalul: ps la, și pentru a vedea doar zombii: 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

Dacă, la listarea proceselor, apare unul cu starea Z, înseamnă că este un zombie, ceea ce la rândul său înseamnă că aplicația nu este bine rezolvată sau are erori, știind că PID-ul său poate fi eliminat executând o comandă similară, în terminal, în acest exemplu: 

alf @ Alf ~ $ ucide -9 1945

Când aveți multe procese zombie sau cel puțin mai multe, puteți utiliza următoarea comandă care îi ucide, funcționează doar pentru asta, dacă o rulați fără a avea procese zombie nu se va întâmpla nimic:

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

În ceea ce priveşte


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   adecvat el a spus

    🙁

  2.   Oscar el a spus

    Mulțumesc, contribuție foarte bună, voi salva comenzile pentru a face verificări periodice.

  3.   Tachina el a spus

    Mulțumesc, frumos articol.

  4.   MSX el a spus

    Câteva clarificări cu privire la articolul dvs.:

    Termenul „proces zombie” este inadecvat din punct de vedere tehnic și cei dintre noi care au puțină experiență cu GNU / Linux ar trebui să evite utilizarea acestuia, deoarece nu există niciun proces care rulează în sine, ci este doar o referință la un proces care nu mai există în sistem și nu și-a eliberat identificatorul.

    Un „proces zombie” este de fapt intrarea în tabelul de mapare a identificatorului de proces (descriptorul procesului), doar că, astfel încât nu consumă resurse dincolo de câțiva octeți de memorie pe care sistemul le folosește pentru a ține evidența tabelul procesului.

    Singura problemă care poate apărea cu descriptorii de registre fantomă (sau zombi) este că, dacă apar prea repede, ar putea ocupa teoretic întregul tabel de alocare a descriptorului de proces, lăsând sistemul fără spațiu pentru înregistrări noi, deci ar putea fi imposibil de rulat programe noi - care le înregistrează procesele - în cele din urmă atârnă aparatul.

    Cu toate acestea, acest lucru este aproape imposibil să se întâmple, deoarece în sistemele pe 32 de biți există 32767 de spații pentru înregistrarea proceselor (rareori sau niciodată utilizate) și de două ori mai mult într-un sistem pe 64 de biți.

    Singura modalitate de a face ca un sistem să se blocheze cu procesele moarte rău eliminate este de a crea procesele și de a le ucide rapid fără a curăța corect descriptorul procesului (adică, a crea „procese zombie”), dar, să recunoaștem, dacă cineva vrea să atârne un sistem există modalități mult mai directe de atât. să înceapă să creeze noi procese rapid într-un mod exponențial care blochează sistemul și îl atârnă; una dintre modalitățile de a realiza acest lucru cu o furcă bombă:

    : () {: |: &};:

    Puteți face sistemul relativ rezistent la o furcă de bombă configurând corect /etc/security/limits.conf, deși trebuie luat în considerare faptul că cu cât limităm mai mult posibilitatea de a crea noi procese, vom putea rula mai puține aplicații simultan pe sistemul nostru Cu toate acestea, este un instrument valid pentru toți administratorii paranoici care doresc să aibă un control foarte fin asupra sistemelor lor!

    Acest articol conține informații bune despre descriptorii de proces nevalizi:
    http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
    Și în aceasta există o explicație clară despre modul în care funcționează o furcă-bombă: http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work

    Salu2

    1.    jotaele el a spus

      msx: «Termenul„ Proces zombie ”este inadecvat din punct de vedere tehnic și cei dintre noi care avem puțină experiență în GNU / Linux ar trebui să evităm să îl folosim ...» Ha ha ha. Există doar ceva mai mare decât mândria ta: prostul tău gust. Hei, ceea ce ați făcut este de prost gust, dacă vreți să susțineți o prelegere, să luați una la facultate sau să vă puneți propriul blog și să scrieți ce doriți, dar să veniți aici pentru a corecta apartamentul la bun Alf este într-adevăr de prost gust.

      1.    Ferdinand Rojas el a spus

        Adevărul mi s-a părut un comentariu destul de interesant. Mult mai mult decât postarea

  5.   platonov el a spus

    multumesc foarte interesant.

  6.   Putreze87 el a spus

    articol excelent mulțumesc

  7.   Alf el a spus

    MSX
    „Termenul„ proces zombie ”este inadecvat din punct de vedere tehnic și cei dintre noi care avem puțină experiență în GNU / Linux ar trebui să evităm utilizarea acestuia”

    Va trebui să anunțăm dezvoltatorii, deoarece după cum veți vedea, este folosit și termenul de zombie, acolo l-am citit pe consolă.

    În ceea ce priveşte

  8.   Oraș el a spus

    Felicitări, articol foarte bun, am avut întotdeauna îndoieli că sunt PZ-uri, dar nu am avut niciodată timp să investighez, acum intru pe pagină și dau peste răspuns, mulțumesc ...

  9.   truko22 el a spus

    În KDE, controlul + sistemul de evacuare activitățile se sting și putem ucide acei zombi rapid.

  10.   Ploaie el a spus

    O corecție, este un proces ZOMBIE nu un proces ZOMBIE
    Zombie este în engleză
    Zombi în spaniolă

  11.   elynx el a spus

    Lux, mulțumesc!

  12.   Roberto el a spus

    În primul rând, termenul proces zombie pare complet corect. De asemenea, termenul este cel mai puțin important.
    Ideea este că, așa cum indică msx, și aceeași wikipedia (am citit articolul), procesul zombie este cu adevărat mort.
    «Când un proces se termină, toată memoria și resursele asociate sunt dereferențiate, astfel încât să poată fi utilizate de alte procese. Oricum, intrarea procesului în tabelul de proces rămâne în continuare »
    Adică, procesul nu mai ocupă resurse de sistem, prin urmare, sarcina pe sistem este minimă, așa cum se explică prin msx.
    Totuși, singurul lucru pe care îl are este o intrare nevalidă în tabelul de proces ... care, dacă există mii, poate ar fi o încărcare (la urma urmei, procesorul trebuie să citească tabelul de proces și ar citi o mulțime de informații inutile) pe lângă faptul că reflectă practicile proaste de programare (cineva face aplicații slab făcute).
    Dar, în sine, explicația postării nu este atât de corectă, iar cea corectă ar fi cea dată de msx.