Zombie protsess. Kõik pole kuulnud sellest huvitavast, kuid hirmutavast sõnast, mis on seotud Linuxi operatsioonisüsteemiga. Personaalarvutis ei pruugi zombiprotsessid tavakasutajale ohtu kujutada, kuid Linuxi serverite osas tuleb need protsessid tuvastada ja need peatada.
Sellised protsessid võivad põhjustada probleeme teie süsteemi protsessitabeliga ja omakorda rikkuda teie masina nõuetekohast toimimist. Seetõttu käsitleme selles artiklis üksikasjalikult zombiprotsesse koos põhjaliku juhendiga zombiprotsesside leidmiseks ja tapmiseks Linuxi masinas.
Mis on zombiprotsessid?
Kuid enne kõike seda on oluline, et teaksite, mis zombiprotsessid tegelikult on. Need pole muud kui surnud ja kadunud protsessid, mis hõivavad ruumi süsteemiprotsesside tabelis. A protsessi juhtimise plokk või PCB on andmestruktuur, mis salvestab teie süsteemis töötavate üksikute protsessidega seotud üksikasjad.
Protsessitabel koosneb protsessi ID-st, lingist PCB-le ja muust protsessiga seotud kasulikust teabest. Zombie-protsessidel on oma protsesside ID-d ja mäluhalduse teave. Kuna Linuxi OS-il on piiratud arv protsessi ID-sid, ei saa teised protsessid PID-sid kasutada enne, kui zombiprotsess peatub.
Kuigi üks või kaks zombiprotsessi ei põhjusta teie arvutis katkestusi ega jõudlusprobleeme, a suur hulk selliseid protsesse võib kahjustada teie süsteemi töövoogu, ujutades üle protsessitabeli ja ressursse.
Mis põhjustab Linuxis zombiprotsesse?
Zombiprotsessi põhjuste üksikasjalikuks mõistmiseks peate õppima, kuidas protsessid Linuxis algavad ja peatuvad. Linuxi operatsioonisüsteem jälgib kõiki arvutis töötavaid protsesse ja deemoneid. The protsessitabel on struktuuride loend, mis sisaldab kõiki teie arvutis praegu töötavaid protsesse.
Iga protsessitabeli protsessikirje koosneb linkist protsessi juhtimise plokk selle konkreetse protsessi jaoks. PCB salvestab selle konkreetse protsessiga seotud üksikasjad. Need üksikasjad hõlmavad järgmist:
- Protsessi olek: Protsessi hetkeseis
- Protsessi number: Protsessi tuvastamiseks kasutatav kordumatu number
- Programmiloendur: Sisaldab teavet järgmise juhise kohta
- Registrid: Kõigi protsessori poolt kasutatavate protsessorite registrite loend
- Ava faililoend: Protsessis kasutatud failid
- Teave protsessori ajastamise kohta: Sisaldab teavet, mis on seotud protsessori aja ja ressurssidega, mis on protsessile eraldatud
- Teave mäluhalduse kohta: Sisaldab üksikasju protsessi käigus kasutatava mälumahu kohta
- I / O teave: Protsessis kasutatud sisend- või väljundseadmete loend
Linux kasutab kõigi oma protsesside kirjeldamiseks järgmisi protsessiolekuid.
- R: Jooksuprotsess
- S: Magamisprotsess
- D: Katkematu magamisprotsess
- T: Lõpetatud protsess
- Z: Zombie protsess
Alati, kui protsess täidab määratud ülesande, määratakse selle protsessi olekuks Zombie või Z. Igal protsessil on vanemprotsess, mis kutsub üles funktsioonide perekonna oota () mis ootab protsessi olekumuutust. Näiteks kui protsessi olek muutub alates Jooksmine kuni Zombie, oota () meetod käivitatakse.
The oota () meetod kustutab tavaliselt selle zombiprotsessiga seotud protsessijuhtimisploki ja seejärel eemaldab selle protsessi sisestuse protsessitabelist.
Kuid mõnikord ei kutsu vanem protsess programmi kehva arengu tõttu seda oota () funktsioon. Ja selle tulemusena ei kustuta süsteem zombiprotsessi PCB-d. Ka selle konkreetse protsessi protsessitabeli kirje jääb puutumata.
See annab zombiprotsessile lõpmatu eluea. Kuna süsteem ei saa protsessi tappa, ei kustutata protsessikirjet kunagi ja PID ei vabane kunagi.
Lisateave: Reageerimata programmide tapmise viisid Linuxis
Kuidas leida zombiprotsesse?
Esimene samm teie süsteemis olevate zombiprotsesside eemaldamiseks on analüüsida, milline protsess on Zombie protsessi olek. Kuigi te ei saa neid protsesse otse tappa, kuna süsteem on need juba mälust eemaldanud, võite tappa nendega seotud vanemprotsessi.
Esiteks peate kontrollima, kas teie süsteemi protsessitabelis on zombiprotsess. Saate seda hõlpsalt kasutada üles käsk. Lihtsalt avage terminal ja tippige:
üles
Näete selle väljundiga sarnast väljundit. Pange tähele terminaliakna ülaosas olevate zombiprotsesside arvu. Kui väljund on null, siis pole teil midagi muretseda.
Nende zombiprotsessidega seotud teavet saate torustiku abil loetleda käsk ps koos egrep. Egrep on Linuxi käsu grep laiendus, mis käsitleb kõiki mustreid laiendatud regeksistringina.
Seotud: Algajate juhend regulaarsete väljendite kohta Pythoni abil
Kõigi zombiprotsesside loetlemiseks tippige järgmine käsk:
ps aux | egrep "Z | kadunud"
Eelnimetatud käsk otsib ridu, mis sisaldavad kumbagi Z või kadunud käsu ps genereeritud väljundis. Väljund koosneb teie süsteemis töötavate zombiprotsesside loendist.
Zombie-protsesside tapmine kill-käsu abil
Nüüd, kui teate, millised zombiprotsessid teie süsteemiressursse praegu ära söövad, on aeg need protsessid tappa.
Kui zombiprotsesside tapmiseks on kõige lihtsam viis arvuti taaskäivitamine, pole see mõnikord teostatav valik, eriti kui haldate serverit.
Zombiprotsesside tapmiseks ilma serverit sulgemata märkige üles mis tahes zombiprotsessi protsessi ID. Eelmisest jaotisest näeme, et zombiprotsessi PID oli 18614. Seejärel kasutage seda PID-d vanemprotsessi ID leidmiseks.
ps -o ppid = -p 18614
Väljund:
18613
Kontrollige, kas vanemprotsessi ID on olemas ps käsk.
ps -e | grep 18613
Nüüd, kui oleme kinnitanud vanemaprotsessi olemasolu, on aeg see tappa. Läbi -SIGKILL lipuga tapma käsk järgmiselt:
sudo kill -SIGKILL 18613
Kui olete vanemaprotsessi tapnud, kustutab süsteem zombiprotsessi ja eemaldab selle protsessitabelist automaatselt.
Protsesside tõhus haldamine Linuxis
Iga süsteemiadministraator peab tähtsustama Linuxi masinas töötavaid jälgimisprotsesse. Kuigi zombiprotsessid pole teie süsteemile tingimata kahjulikud, võivad need arvukalt esinemisel põhjustada jõudlusega seotud probleeme.
Kui olete algaja Linuxi kasutaja ja teil pole aimugi, kuidas Linuxi operatsioonisüsteem protsesse haldab, on alustamiseks kõigepealt protsesside õppimine.
Protsessi ja töökohtade mõistmine on Linuxiga toimetuleku põhiaspekt. Siin on, mida peate teadma.
Loe edasi
- Linux
- Linux
- Töötlemine
Deepesh on MUO Linuxi nooremtoimetaja. Ta on kirjutanud Internetis infosisu üle 3 aasta. Vabal ajal meeldib talle kirjutada, muusikat kuulata ja kitarri mängida.
Telli meie uudiskiri
Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e-raamatuid ja eksklusiivseid pakkumisi!
Veel üks samm !!!
Palun kinnitage oma e-posti aadress meilis meile, mille me just saatsime.