Zombi postopek. Niso še vsi slišali za to zanimivo, a strašljivo besedo, povezano z operacijskim sistemom Linux. V osebnem računalniku zombi procesi morda ne bodo ogrožali običajnega uporabnika, toda ko gre za strežnike Linux, jih je treba identificirati in ustaviti.

Takšni procesi lahko povzročijo težave s tabelo procesov v vašem sistemu in posledično posegajo v pravilno delovanje vaše naprave. Zato bomo v tem članku podrobno razpravljali o zombi procesih, skupaj z izčrpnim vodnikom o iskanju in ubijanju zombi procesov v sistemu Linux.

Kaj so zombi procesi?

Pred vsem tem pa je pomembno, da veste, kaj v resnici so zombi procesi. To niso nič drugega kot mrtvi in ​​neaktivni procesi, ki zasedajo prostor v sistemski tabeli procesov. A blok za nadzor procesa ali PCB je podatkovna struktura, ki hrani podrobnosti, povezane s posameznimi procesi, ki se izvajajo v vašem sistemu.

Tabela postopkov je sestavljena iz ID-ja procesa, povezave do PCB-ja in drugih koristnih informacij, povezanih s postopkom. Zombi procesi imajo svoje ID-je procesov in informacije o upravljanju pomnilnika. Ker ima OS Linux na voljo omejeno število ID-jev procesov, drugi procesi ne morejo uporabljati PID-jev, dokler se zombi proces ne ustavi.

instagram viewer

Čeprav en ali dva zombi procesa ne bosta povzročila motenj ali težav z delovanjem računalnika, a veliko število takih procesov lahko škoduje delovnemu toku vašega sistema, tako da preplavi procesno tabelo in virov.

Kaj povzroča procese zombija v Linuxu?

Če želite podrobno razumeti osnovni vzrok zombi procesa, se boste morali naučiti, kako se procesi začnejo in ustavijo v Linuxu. Operacijski sistem Linux spremlja vse tekoče procese in demone v računalniku. The tabela procesov je seznam struktur, ki vsebuje vse procese, ki se trenutno izvajajo v vaši napravi.

Vsak vnos procesa v tabeli procesov vsebuje povezavo do blok za nadzor procesa tega posebnega procesa. PCB shrani podrobnosti, povezane s tem postopkom. Te podrobnosti vključujejo:

  1. Stanje procesa: Trenutno stanje procesa
  2. Številka postopka: Enolična številka, ki se uporablja za identifikacijo postopka
  3. Števec programov: Vsebuje informacije, povezane z naslednjim navodilom
  4. Registri: Seznam vseh registrov CPU, ki jih uporablja postopek
  5. Odprite seznam datotek: Datoteke, ki jih uporablja postopek
  6. Informacije o razporejanju CPE: Vsebuje informacije, povezane s časom procesorja in viri, dodeljeni procesu
  7. Informacije o upravljanju pomnilnika: Vključuje podrobnosti o količini pomnilnika, ki ga porabi postopek
  8. V / I informacije: Seznam vhodnih ali izhodnih naprav, ki jih uporablja postopek

Linux za opis vseh svojih procesov uporablja naslednja stanja procesov.

  • R: Teče postopek
  • S: Postopek spanja
  • D: Neprekinjen postopek spanja
  • T: Končan postopek
  • Z: Zombi postopek

Kadar koli postopek zaključi dodeljeno nalogo, je njegovo stanje procesa nastavljeno kot Zombi ali Z. Vsak postopek ima nadrejeni postopek, ki pokliče družino funkcij z imenom počakaj () ki čaka na državno spremembo procesa. Na primer, če se stanje procesa spremeni iz Tek do Zombi, počakaj () se sproži metoda.

The počakaj () metoda običajno izbriše kontrolni blok procesa, povezan s tem zombi procesom, in nato iz tabele postopkov odstrani vnos tega procesa.

Toda včasih zaradi slabega razvoja programa nadrejeni postopek ne pokliče počakaj () funkcijo. Posledično sistem ne izbriše PCB-ja postopka zombi. Tudi vnos tabele procesov za ta poseben postopek ostane nedotaknjen.

To omogoča procesu zombija neskončno življenjsko dobo. Ker sistem ne more ubiti procesa, se vnos procesa nikoli ne izbriše in PID se nikoli ne sprosti.

Nauči se več: Načini za ubijanje neodzivnih programov v Linuxu

Kako najti zombi procese?

Prvi korak pri odstranjevanju zombi procesov v vašem sistemu je analiza, kateri proces ima Zombi stanje procesa. Teh procesov sicer ne boste mogli neposredno ubiti, saj jih je sistem že odstranil iz pomnilnika, lahko pa ubijete nadrejeni postopek, povezan z njimi.

Najprej morate preveriti, ali ima tabela procesov v sistemu zombi proces. To lahko preprosto storite s pomočjo vrh ukaz. Preprosto odprite terminal in vnesite:

vrh

Videli boste izhod, podoben temu. Upoštevajte število zombi procesov na vrhu terminalskega okna. Če je izhod nič, potem vas ni treba skrbeti.

Informacije, povezane s temi zombi procesi, lahko navedete s cevovodi ukaz ps s egrep. Egrep je razširitev ukaza grep v Linuxu, ki vse vzorce obravnava kot razširjeni niz regularnih izrazov.

Sorodno: Priročnik za začetnike za regularne izraze s Pythonom

Vnesite naslednji ukaz, da se prikažejo vsi zombi procesi:

ps pomožni | egrep "Z | odsoten"

Zgoraj omenjeni ukaz bo poiskal vrstice, ki vsebujejo eno ali drugo Z ali neaktiven v izhodu, ki ga ustvari ukaz ps. Rezultat je sestavljen iz seznama zombi procesov, ki se izvajajo v vašem sistemu.

Ubijanje procesov zombijev z uporabo ukaza kill

Zdaj, ko veste, kateri zombi procesi trenutno požrejo vaše sistemske vire, je čas, da te procese ubijete.

Čeprav je najlažji način ubijanja procesov zombijev znova zagnati računalnik, včasih to ni izvedljiva možnost, še posebej, če upravljate strežnik.

Če želite ubiti zombi procese, ne da bi zaustavili strežnik, si zapišite ID postopka katerega koli zombi procesa. Iz prejšnjega razdelka vidimo, da je bil PID postopka zombija 18614. Nato s tem PID poiščite ID nadrejenega procesa.

ps -o ppid = -p 18614

Izhod:

18613

Preverite, ali obstaja nadrejeni ID procesa, z uporabo ps ukaz.

ps -e | grep 18613

Zdaj, ko smo potrdili obstoj nadrejenega procesa, je čas, da ga ubijemo. Mimo -POTPISI zastava z znakom ubiti ukaz, kot sledi:

sudo kill -SIGKILL 18613

Ko ubijete nadrejeni proces, sistem zombi postopek izbriše in samodejno odstrani iz tabele procesov.

Učinkovito upravljanje procesov v Linuxu

Vsak sistemski skrbnik mora dati prednost nadzornim procesom, ki se izvajajo na računalniku Linux. Čeprav zombi procesi niso nujno škodljivi za vaš sistem, lahko povzročijo težave z zmogljivostjo, če jih obstaja v velikem številu.

Če ste začetnik uporabnika Linuxa in ne veste, kako operacijski sistem Linux upravlja procese, je dobro začeti, kaj so procesi najprej.

E-naslov
Kaj je postopek v Linuxu?

Razumevanje postopkov in delovnih mest je ključni vidik pri spopadanju z Linuxom. Tukaj je tisto, kar morate vedeti.

Preberite Naprej

Sorodne teme
  • Linux
  • Linux
  • Obravnavati
O avtorju
Deepesh Sharma (45 objavljenih člankov)

Deepesh je mlajši urednik za Linux pri MUO. Na internetu že več kot 3 leta piše informativne vsebine. V prostem času rad piše, posluša glasbo in igra kitaro.

Več od Deepesh Sharme

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, preglede, brezplačne e-knjige in ekskluzivne ponudbe!

Še en korak…!

Potrdite svoj e-poštni naslov v e-poštnem sporočilu, ki smo vam ga pravkar poslali.

.