Zombių procesas. Ne visi yra girdėję apie šį įdomų, tačiau baisų žodį, susijusį su „Linux“ operacine sistema. Asmeniniame kompiuteryje zombių procesai negali kelti grėsmės įprastam vartotojui, tačiau kalbant apie „Linux“ serverius, šie procesai turi būti nustatyti ir sustabdyti.

Tokie procesai gali sukelti problemų su jūsų sistemos procesų lentele ir savo ruožtu pakenkti tinkamam jūsų mašinos veikimui. Todėl šiame straipsnyje mes išsamiai aptarsime zombių procesus ir išsamų vadovą, kaip rasti ir nužudyti zombių procesus „Linux“ kompiuteryje.

Kas yra zombių procesai?

Tačiau prieš tai svarbu žinoti, kas iš tikrųjų yra zombių procesai. Tai ne kas kita, kaip mirę ir neveikiantys procesai, užimantys vietą sistemos procesų lentelėje. A proceso valdymo blokas arba PCB yra duomenų struktūra, kurioje saugoma išsami informacija, susijusi su jūsų sistemoje vykstančiais atskirais procesais.

Proceso lentelę sudaro proceso ID, nuoroda į PCB ir kita naudinga informacija, susijusi su procesu. Zombių procesai turi savo procesų ID ir atminties valdymo informaciją. Kadangi „Linux“ OS turi ribotą skaičių procesų ID, kiti procesai negali naudoti PID, kol zombių procesas nesustos.

Nors vienas ar du zombių procesai nesukels jokių sutrikimų ar našumo problemų jūsų kompiuteryje, a didelis tokių procesų skaičius gali pakenkti jūsų sistemos darbo eigai, užliejant procesų lentelę ir išteklių.

Kas sukelia zombių procesus sistemoje „Linux“?

Norėdami išsamiai suprasti pagrindinę zombių proceso priežastį, turėsite sužinoti, kaip procesai prasideda ir sustoja sistemoje „Linux“. „Linux“ operacinė sistema stebi visus kompiuteryje vykstančius procesus ir demonus. The proceso lentelė yra struktūrų sąrašas, kuriame yra visi procesai, kurie šiuo metu vykdomi jūsų kompiuteryje.

Kiekvieną proceso lentelės proceso įrašą sudaro nuoroda į proceso valdymo blokas to konkretaus proceso. PCB saugo su tuo konkrečiu procesu susijusią informaciją. Ši informacija apima:

  1. Proceso būsena: Dabartinė proceso būklė
  2. Proceso numeris: Unikalus numeris, naudojamas procesui identifikuoti
  3. Programos skaitiklis: Yra informacijos, susijusios su kita instrukcija
  4. Registrai: Visų procesoriaus naudojamų procesorių registrų sąrašas
  5. Atidaryti failų sąrašą: Proceso naudojami failai
  6. Procesoriaus planavimo informacija: Yra informacijos, susijusios su procesoriaus laiku ir procesui skirtais ištekliais
  7. Informacija apie atminties valdymą: Apima išsamią informaciją apie atminties kiekį, kurį naudoja procesas
  8. I / O informacija: Proceso naudojamų įvesties arba išvesties įrenginių sąrašas

„Linux“ naudoja šias proceso būsenas apibūdindama visus savo procesus.

  • R: Bėgimo procesas
  • S: Miego procesas
  • D: Nenutrūkstamas miego procesas
  • T: Nutrauktas procesas
  • Z: Zombių procesas

Kai procesas užbaigia priskirtą užduotį, jo proceso būsena nustatoma kaip Zombis arba Z. Kiekvienas procesas turi pirminį procesą, kuris vadina funkcijų šeimą laukti() kad laukia proceso būsenos pasikeitimo. Pvz., Jei proceso būsena pasikeičia iš Bėgimas į Zombis, laukti() metodas bus suaktyvintas.

The laukti() metodas paprastai ištrina su tuo zombių procesu susijusį proceso valdymo bloką ir pašalina to proceso įrašą iš procesų lentelės.

Tačiau kartais dėl prasto programos vystymo tėvų procesas nevadina laukti() funkcija. Dėl to sistema neištrina zombių proceso PCB. Šio konkretaus proceso proceso lentelės įrašas taip pat lieka nepažeistas.

Tai suteikia zombių procesui begalinę gyvenimo trukmę. Kadangi sistema negali užmušti proceso, proceso įrašas niekada neištrinamas ir PID niekada neišlaisvinamas.

Sužinokite daugiau: Būdai, kaip nužudyti neatsakančias programas sistemoje „Linux“

Kaip rasti zombių procesus?

Pirmasis žingsnis pašalinant zombių procesus jūsų sistemoje yra analizuoti, kuris procesas yra Zombis proceso būsena. Nors negalėsite tiesiogiai nužudyti šių procesų, nes sistema juos jau pašalino iš atminties, galite nužudyti su jais susijusį pirminį procesą.

Pirmiausia turite patikrinti, ar jūsų sistemos procesų lentelėje yra zombių procesas. Tai galite lengvai padaryti naudodami viršuje komandą. Tiesiog atidarykite terminalą ir įveskite:

viršuje

Pamatysite išvestį, panašią į šią. Atkreipkite dėmesį į zombių procesų skaičių terminalo lango viršuje. Jei išvestis lygi nuliui, tuomet neturite dėl ko jaudintis.

Vamzdynais galite išvardyti informaciją, susijusią su šiais zombių procesais ps komanda su egrep. „Egrep“ yra „Linux“ komandos „grep“ plėtinys, kuris visus modelius traktuoja kaip išplėstinę regex eilutę.

Susijęs: „Reguliarių išraiškų su„ Python “pradedančiųjų vadovas

Įveskite šią komandą, kad išvardytumėte visus zombių procesus:

ps aux | egrep "Z | neveikia"

Minėta komanda ieškos eilučių, kuriose yra bet kuri Z arba nebeveikiantis ps komandoje sugeneruotame išvestyje. Išvestį sudaro jūsų sistemoje vykdomų zombių procesų sąrašas.

Zombių procesų nužudymas naudojant komandą „kill“

Dabar, kai žinote, kurie zombių procesai šiuo metu praranda jūsų sistemos išteklius, atėjo laikas nužudyti šiuos procesus.

Nors paprasčiausias būdas užmušti zombių procesus yra paleisti kompiuterį iš naujo, kartais tai nėra įmanoma galimybė, ypač jei jūs administruojate serverį.

Norėdami užmušti zombių procesus neišjungdami serverio, užsirašykite bet kurio zombio proceso ID. Iš ankstesnio skyriaus matome, kad zombių proceso PID buvo 18614. Tada naudokite šį PID, kad surastumėte pirminio proceso ID.

ps -o ppid = -p 18614

Išvestis:

18613

Patikrinkite, ar yra pirminio proceso ID, naudodami ps komandą.

ps -e | Grep 18613 m

Dabar, kai mes patvirtinome tėvų proceso egzistavimą, atėjo laikas jį nužudyti. Perduokite -SIGKILL vėliava su nužudyti komandą taip:

sudo nužudyti -SIGKILL 18613

Kai nužudysite tėvų procesą, sistema ištrins zombių procesą ir automatiškai pašalins jį iš procesų lentelės.

Efektyvus procesų valdymas naudojant „Linux“

Kiekvienas sistemos administratorius turi teikti prioritetą stebėjimo procesams, vykdomiems „Linux“ kompiuteryje. Nors zombių procesai nebūtinai yra kenksmingi jūsų sistemai, jie gali sukelti našumo problemų, jei jų yra daug.

Jei esate pradedantysis „Linux“ vartotojas ir neįsivaizduojate, kaip „Linux“ operacinė sistema valdo procesus, pirmiausia verta sužinoti, kas yra procesai.

El
Kas yra „Linux“ procesas?

Proceso ir darbų supratimas yra pagrindinis aspektas, norint susidoroti su „Linux“. Štai ką jūs turite žinoti.

Skaitykite toliau

Susijusios temos
  • „Linux“
  • „Linux“
  • Apdorojimas
Apie autorių
„Deepesh Sharma“ (Paskelbti 45 straipsniai)

Deepesh yra MUO „Linux“ jaunesnysis redaktorius. Jis daugiau nei 3 metus rašė informacinį turinį internete. Laisvalaikiu jam patinka rašyti, klausytis muzikos ir groti gitara.

Daugiau iš „Deepesh Sharma“

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kuriame rasite techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Dar vienas žingsnis…!

Prašome patvirtinti savo el. Pašto adresą el. Laiške, kurį jums ką tik išsiuntėme.

.