Cred că nu mă voi înșela dacă presupun că voi, la fel de bine ca și mine, mi-am întrebat uneori când am lansat terminalul com al axei terminale ps, anume procesele Z.
2851. Z 0:00 [gksu]
Care sunt aceste procese zombie? Și când încearcă să-i omoare cu comanda de ucidere, ei rămân nevăzuți. Ce să faci cu ei?
În realitate, totul nu este atât de simplu. Mai simplu, dar nu la prima vedere. Faptul este că, zombi, acestea sunt deja procese distruse. Înțelegeți că nimic nu va putea să omoare de două ori, este inutil să ucizi ceva deja mort.
Pentru aceste procese, comanda kill a fost deja executată, ucide. Numai din diverse motive, această echipă nu a putut termina, finalizarea normală a procesului. De fapt, se obține o situație ambiguă, atunci când este privit în mod oficial, procesul continuă să existe, dar resursele care sunt alocate sub el, în realitate, scutite.
Motivul pentru existența proceselor zombie este că procesul de mamă poate solicita stadiul de finalizare sau statisticile privind utilizarea resurselor generate de procesul zombie. În cazul în care procesul părinte nu mai are nevoie de un proces zombie, atunci în acest caz semnalează acest lucru, către sistemul de operare, apelând funcția de așteptare a sistemului.
În cazul unei situații normale de terminare a procesului, toate procesele generate devin moștenitori ai iniției, a căror PID este una. Init întotdeauna așteaptă finalizarea tuturor proceselor generate, exact așa se face pentru a evita procesele de zombie.
Dacă există procese zombie în sistem, înseamnă că acestea nu mai servesc procesele părinte, pe care le puteți defini prin comanda ps -lax, în coloana PPID.
0 1000 2851 1639 20 0 0 0 ieșire Z. 0:00 [gksu]
Ce faceți în acest caz? De fapt, există de fapt trei opțiuni.
Și de fapt:
1. Corectați procesul părinte
2. Ucideți procesul părintelui
3. Continuați să trăiți cu asta.
Că în situații normale nu este atât de dificil, zombii, de obicei, nu interferează cu munca în sine. Deși există mai multe situații enervante.
Acest lucru se datorează faptului că procesele zombie blochează înregistrările din tabelul de proces, iar această dimensiune nu este infinită. În cazul în care limita este atinsă, programele nu mai pot crea procese copil, nu puteți accesa nici terminalul, nici nu puteți executa comenzi în consola deja deschisă. Acest lucru am avut o dată. Dar nu este o situație obișnuită, nu știu, atunci doar un reboot ma ajutat.