Sužinokite „Linux“

Kaip nužudyti „Zombie“ procesus sistemoje „Linux“

Kaip nužudyti „Zombie“ procesus sistemoje „Linux“

„Linux“ atliktas zombių procesas reiškia tuos jau mirusius procesus, tačiau vienaip ar kitaip jie vis dar yra sistemos procesų lentelėje. Spraga yra ta, kad dėl kažkokių priežasčių tėvas iš proceso lentelės neišvalė šio proceso. Paprastai tai įvyksta baigus vykdymo procesą.

Įprastas operacijos būdas sistemoje „Linux“ yra tai, kad baigus procesą, procesas praneša tėvui, kuris yra atsakingas už proceso pašalinimą iš lentelės. Deja, tėvai negali ištrinti proceso iš atminties tais atvejais, kai tėvai negali perskaityti vaiko būsenos. Taip atsitinka, kad procesų lentelėje turime negyvus procesus. Tai mes vadiname zombių procesais.

Kas sukelia „Linux Zombie“ procesus?

Kai sukuriamas vaiko procesas, blogai parašytas tėvų procesas gali nepavykti iškviesti laukimo () funkcijos. Todėl jos zombių vaikai užtruks atmintyje, kol bus užgesinti.

Tai reiškia, kad niekas nestebi kūdikio proceso būsenos pokyčių ir SIGCHLD signalas bus ignoruojamas. Galbūt kita programa trukdo tėvų procesui vykdyti, naudodama apgaulingą programavimą arba piktavališkus ketinimus.

Tinkamas sistemos tvarkymas nebus vykdomas, jei tėvų procesas nestebi būsenos pokyčių vaiko procese.

Kai kūdikio procesas baigsis, PCB ir įrašas proceso lentelėje nebus pašalintas. Dėl to zombių būsena niekada nėra pašalinama iš PCB.

Zombiai tikrai turi šiek tiek atminties, tačiau tai paprastai nėra problema. Kadangi „Linux“ sistemose yra galutinis PID skaičius (nors ir didelis skaičius), jei pakankamai ZID zombuojami, negalima pradėti jokio kito proceso. Abejotina, ar taip atsitiks.

Tačiau zombinti procesai rodo, kad programoje kažkas nepavyko ir kad konkrečioje programoje gali būti klaida.
Duomenų centruose esančios programinės įrangos klaidos neturėtų būti toleruojamos ir turi būti pašalintos.
Turėtumėte stebėti ir sunaikinti zombių procesus, kol gedimas bus pašalintas.

Proceso ID negalima pakartotinai naudoti, kol jis nepaleistas, todėl proceso lentelės įrašas yra nedidelis.
Kadangi PCB yra daug didesnis nei procesų lentelės įrašas 64 bitų operacinėje sistemoje, vargu ar tai sukels problemų.

Kituose procesuose turimos atminties kiekį gali paveikti daugybė zombių. Tačiau, jei turite tiek daug zombių, turite rimtų problemų dėl pagrindinės programos arba operacinės sistemos klaidos.

Taigi, ką jūs darote, kai procedūra virsta zombiu? Jūs susekti ir pašalinti zombių procesus.

Kaip rasti zombių procesą?

Pirmiausia sustabdžius zombių procesą sistemoje, pirmiausia reikia jį identifikuoti. Kadangi init procesas reguliariai valomas po zombių, viskas, ką turite padaryti, kad atsikratytumėte, yra sunaikinti juos sukūrusį procesą.

Viršutinė komanda yra greitas būdas sužinoti, ar jūsų vietovėje yra zombių. Norėdami tai pasiekti, vykdysime šią komandą.

viršuje

aukščiausios komandos rezultatai

Šios sistemos zombių procesų skaičius bus rodomas išvestyje. Mūsų atveju aukščiau turime 0 zombių.
Naudodami komandą ps ir įvedę ją į egrep, galime gauti jų sąrašą. Valstybinė zombių procesų vėliava yra „Z“, taip pat kartais pamatysite „neveikiančią“.

tuts @ fosslinux: ~ $ ps aux | egrep "Z | neveikia"

Zombių procesų valstybinė vėliava yra Z arba neveikia

Išskaidykime įvairius šios komandos skyrius.

Z išvesties stulpelyje STAT identifikuoja zombių procesą.
[defunct] paskutiniame išvesties stulpelyje (COMMAND) taip pat nurodo zombių procesą.

Idealiu atveju neįmanoma nužudyti Zombių proceso, nes jis yra miręs. Vietoj to, mes pranešame tėvams, kad jie bandytų ir perskaitytų vaiko proceso būseną ir galiausiai išvalytų juos iš sistemos lentelės. Norėdami suaktyvinti šį procesą, mes siunčiame SIGCHLD signalą proceso tėvams. Nustatant pirminį proceso ID arba vadinamąjį PID, reikia paleisti šią komandą:

tuts @ fosslinux: ~ $ ps -o ppid = 

Tėvų proceso ID nustatymas

Gavę „Zombie“ PID, naudokite komandą SIGCHLD signalą anksčiau nustatytiems pirminiams procesams.

tuts @ fosslinux: ~ $ kill -s SIGCHLD 

naudokite komandą SIGCHLD signalas

Kai kuriais atvejais tai nepaaiškina „Zombie“ proceso. Tai ragina mus įsitraukti į b arba c planą. Ankstesnis reiškia pagrindinio proceso paleidimą iš naujo arba pirminių procesų nužudymą. Kita vertus, pastarieji atvejai apima sistemos perkrovimą, ypač kai „Zombie“ procesas dėl „Zombie“ proceso gali sukelti pertrauką arba didžiulį antplūdį.

Žemiau yra komanda nužudyti tėvų procesą.

tuts @ fosslinux: ~ $ nužudyti -9 

komanda nužudyti tėvų procesą

Jei tėvų procesas yra nužudomas, taip pat nužudomi visi konkretaus tėvo procesai. Jei tam tikru metu vienas iš vaiko procesų yra kritinis, jums gali tekti atidėti žudymą, kol jis bus saugus. Kita vertus, greitas dvigubas patikrinimas gali parodyti, kiek atminties ar apdorojimo energijos sunaudoja „Zombie“ procesai. Tai padeda nustatyti, ar geresnė parinktis yra nužudyti pagrindinį procesorių atlikti sistemos perkrovimą per kitą jau suplanuotą sistemos priežiūros ciklą.

„Linux“ sistemoje veikia procesų būsenos?

Žinoma, „Linux“ turi sekti visas jūsų kompiuteryje veikiančias programas ir demonus. Proceso lentelės palaikymas yra vienas iš būdų, kaip tai pasiekti.
Tai yra branduolio atminties struktūrų sąrašas. Šiame sąraše yra kiekvieno proceso įrašas, kuriame yra tam tikra informacija apie jį. Kiekvienoje proceso lentelių struktūroje yra labai mažai informacijos.

Jie saugo proceso ID, keletą kitų informacijos elementų ir žymeklį į proceso valdymo bloką (PCB).

PCB yra vieta, kur „Linux“ saugo visą informaciją, kurios reikia kiekvienam procesui ieškoti ar nustatyti. Kuriant procesą, jis yra modifikuojamas, suteikiamas apdorojimo laikas ir tada sunaikinamas.

„Linux“ PCB yra daugiau nei 95 laukai. Tai apibrėžta užduočių struktūroje, kuri yra daugiau nei 700 eilučių. PCB galima rasti šių rūšių informaciją:

Proceso būsenos iliustruojamos žemiau

„Proceso būsena“ gali būti bet kuris iš šių būdų:

Išvada

Zombiai nėra tokie žalingi, nebent jie yra didžiulės ordos dalis. Keletas iš jų nėra didelis dalykas, todėl greitai juos perkrausite. Tačiau reikia atsižvelgti į vieną dalyką.

„Linux“ architektūrose yra maksimalus procesų skaičius ir dėl to maksimalus procesų ID numerių skaičius. Kai pasiekiamas didžiausias kompiuterio zombių procesų skaičius, naujų procesų pradėti negalima.

Zombių procesai nėra procesai; jie yra mirusių procesų likučiai, kurių jų pirminis procesas nebuvo tinkamai išvalytas. Tačiau jei pastebite, kad tam tikra programa ar procesas nuolat neršia zombius, turėtumėte tęsti tyrimą.

Greičiausiai tai tik prastai parašyta programa; tokiu atveju galbūt yra atnaujinta versija, kuri išvaloma, kai vaikas tinkamai apdoroja.

Mėgdžiokite pelės paspaudimus, užveskite pelės žymeklį naudodami pelę „Clickless Mouse“ sistemoje „Windows 10“
Pelės ar klaviatūros naudojimas netinkamoje laikysenoje, kai naudojama per daug, gali sukelti daug sveikatos problemų, įskaitant įtampą, riešo kanalo ...
Pridėkite pelės gestus prie „Windows 10“ naudodami šiuos nemokamus įrankius
Pastaraisiais metais kompiuteriai ir operacinės sistemos labai išsivystė. Buvo laikas, kai vartotojai turėjo naudoti komandas naršydami per failų tvar...
Valdykite ir valdykite pelės judėjimą tarp kelių „Windows 10“ monitorių
„Dual Display Mouse Manager“ leidžia jums valdyti ir konfigūruoti pelės judėjimą tarp kelių monitorių, sulėtinant jo judėjimą šalia sienos. „Windows 1...