Zombie-prosessi. Kaikki eivät ole kuulleet tästä mielenkiintoisesta mutta pelottavasta Linux-käyttöjärjestelmään liittyvästä sanasta. Henkilökohtaisella tietokoneella zombi-prosessit eivät välttämättä ole uhka tavalliselle käyttäjälle, mutta kun kyse on Linux-palvelimista, nämä prosessit on tunnistettava ja lopetettava.
Tällaiset prosessit voivat aiheuttaa ongelmia järjestelmän prosessitaulukossa ja puolestaan manipuloida koneesi asianmukaista toimintaa. Siksi tässä artikkelissa keskustelemme yksityiskohtaisesti zombiprosesseista sekä kattavan oppaan zombiprosessien löytämisestä ja tappamisesta Linux-koneella.
Mitä ovat zombie-prosessit?
Mutta ennen kaikkea on tärkeää, että tiedät mitä zombiprosessit todella ovat. Nämä eivät ole muuta kuin kuolleita ja toimimattomia prosesseja, jotka vievät tilaa järjestelmän prosessitaulukossa. A prosessinohjauslohko tai PCB on tietorakenne, joka tallentaa järjestelmässäsi käynnissä oleviin yksittäisiin prosesseihin liittyvät yksityiskohdat.
Prosessitaulukko koostuu prosessin tunnuksesta, linkistä piirilevyyn ja muusta prosessiin liittyvästä hyödyllisestä tiedosta. Zombie-prosesseilla on omat prosessitunnuksensa ja muistinhallintatietonsa. Koska Linux-käyttöjärjestelmässä on rajoitettu määrä prosessitunnuksia, muut prosessit eivät voi käyttää PID-tunnuksia ennen kuin zombie-prosessi pysähtyy.
Vaikka yksi tai kaksi zombiprosessia ei aiheuta häiriöitä tai suorituskykyongelmia tietokoneellasi, a suuri määrä tällaisia prosesseja voi vahingoittaa järjestelmän työnkulkua täyttämällä prosessitaulukon ja resursseja.
Mikä aiheuttaa zombiprosesseja Linuxissa?
Jotta voisit ymmärtää zombiprosessin taustalla olevan syyn yksityiskohtaisesti, sinun on opittava, kuinka prosessit alkavat ja pysähtyvät Linuxissa. Linux-käyttöjärjestelmä valvoo kaikkia tietokoneen käynnissä olevia prosesseja ja demoneja. prosessitaulukko on luettelo rakenteista, joka sisältää kaikki koneellasi parhaillaan käynnissä olevat prosessit.
Jokainen prosessitaulukon prosessimerkintä koostuu linkistä prosessinohjauslohko kyseisen prosessin. Piirilevy tallentaa kyseiseen prosessiin liittyvät yksityiskohdat. Näitä yksityiskohtia ovat:
- Prosessin tila: Prosessin nykytila
- Prosessin numero: Yksilöllinen numero, jota käytetään prosessin tunnistamiseen
- Ohjelmalaskuri: Sisältää seuraavaan ohjeeseen liittyviä tietoja
- Rekisterit: Luettelo kaikista prosessin käyttämistä CPU-rekistereistä
- Avaa tiedostoluettelo: Prosessin käyttämät tiedostot
- Suorittimen ajoitustiedot: Sisältää tietoja, jotka liittyvät prosessorin aikaan ja prosessiin osoitettuihin resursseihin
- Muistinhallintatiedot: Sisältää tiedot prosessin käyttämästä muistista
- I / O-tiedot: Luettelo prosessin käyttämistä syöttö- tai lähtölaitteista
Linux käyttää seuraavia prosessitiloja kuvaamaan kaikkia prosessejaan.
- R: Juoksuprosessi
- S: Nukkumisprosessi
- D: Keskeytymätön nukkumisprosessi
- T: Lopetettu prosessi
- Z: Zombie-prosessi
Aina kun prosessi suorittaa määritetyn tehtävän loppuun, sen prosessin tilaksi asetetaan Zombie tai Z. Jokaisella prosessilla on ylätason prosessi, joka kutsuu nimeltään toimintoperheen odota() joka odottaa prosessin tilamuutosta. Esimerkiksi, jos prosessin tila muuttuu Juoksu että Zombie, odota() menetelmä käynnistyy.
odota() method yleensä poistaa kyseiseen zombie-prosessiin liittyvän prosessinohjauslohkon ja poistaa sitten prosessin merkinnän prosessitaulukosta.
Mutta joskus ohjelman heikon kehityksen vuoksi vanhempien prosessi ei kutsu odota() toiminto. Tämän seurauksena järjestelmä ei poista zombiprosessin piirilevyä. Myös kyseisen prosessin prosessitaulukon merkintä pysyy ennallaan.
Tämä antaa zombie-prosessille loputtoman käyttöiän. Koska järjestelmä ei voi tappaa prosessia, prosessimerkintää ei koskaan poisteta eikä PID koskaan vapautu.
Lisätietoja: Tapoja tappaa reagoimattomat ohjelmat Linuxissa
Kuinka löytää zombi-prosessit?
Ensimmäinen vaihe zombi-prosessien poistamiseksi järjestelmästäsi on analysoida, mikä prosessi on Zombie prosessin tila. Vaikka et voi tappaa näitä prosesseja suoraan, koska järjestelmä on jo poistanut ne muistista, voit tappaa niihin liittyvän vanhemman prosessin.
Ensin sinun on tarkistettava, onko järjestelmän prosessitaulukossa zombiprosessi. Voit tehdä sen helposti käyttämällä alkuun komento. Avaa vain päätelaite ja kirjoita:
alkuun
Näet samanlaisen tuotoksen kuin tämä. Huomaa zombie-prosessien määrä pääteikkunan yläosassa. Jos lähtö on nolla, et ole mitään syytä huoleen.
Voit listata näihin zombi-prosesseihin liittyviä tietoja putkistolla ps-komento kanssa egrep. Egrep on Linuxin grep-komennon laajennus, joka käsittelee kaikkia malleja laajennettuna regex-merkkijonona.
Liittyvät: Aloittelijan opas säännöllisiin lausekkeisiin Pythonilla
Kirjoita seuraava komento luetellaksesi kaikki zombiprosessit:
ps aux | egrep "Z | poissa käytöstä"
Edellä mainittu komento etsii rivejä, jotka sisältävät joko Z tai kadonnut ps-komennon luomassa lähdössä. Lähtö koostuu luettelosta järjestelmässäsi käynnissä olevista zombiprosesseista.
Zombie-prosessien tappaminen tappokomennolla
Nyt kun tiedät, mitkä zombiprosessit syövät järjestelmäresurssejasi, on aika tappaa nämä prosessit.
Vaikka helpoin tapa tappaa zombiprosessit on käynnistää tietokone uudelleen, joskus tämä ei ole mahdollinen vaihtoehto, varsinkin jos ylläpidät palvelinta.
Jos haluat tappaa zombiprosesseja sulkematta palvelinta, kirjoita muistiin minkä tahansa zombiprosessin prosessitunnus. Edellisestä osasta voimme nähdä, että zombiprosessin PID oli 18614. Käytä sitten tätä PID: tä etsimään ylätason prosessin tunnus.
ps-o ppid = -p 18614
Tuotos:
18613
Tarkista, onko vanhemman prosessin tunnus olemassa ps komento.
ps -e | grep 18613
Nyt kun olemme vahvistaneet vanhemman prosessin olemassaolon, on aika tappaa se. Anna minulle -SIGKILL lippu tappaa komento seuraavasti:
sudo kill -SIGKILL 18613
Kun olet tappanut vanhemman prosessin, järjestelmä poistaa zombiprosessin ja poistaa sen prosessitaulukosta automaattisesti.
Prosessien hallinta tehokkaasti Linuxissa
Jokaisen järjestelmänvalvojan on asetettava etusijalle Linux-koneella suoritettavat seurantaprosessit. Vaikka zombi-prosessit eivät välttämättä ole haitallisia järjestelmällesi, ne voivat aiheuttaa suorituskykyongelmia, jos niitä on paljon.
Jos olet aloittelija Linux-käyttäjä ja sinulla ei ole aavistustakaan siitä, miten Linux-käyttöjärjestelmä hallitsee prosesseja, on hyvä aloittaa oppimalla prosessit ensin.
Prosessin ja työpaikkojen ymmärtäminen on avainasemassa, jotta pääset käsiksi Linuxiin. Tässä sinun on tiedettävä.
Lue seuraava
- Linux
- Linux
- Käsittely
Deepesh on MUO: n Linuxin nuorempi toimittaja. Hän on kirjoittanut tietosisältöä Internetissä yli 3 vuotta. Vapaa-ajallaan hän nauttii kirjoittamisesta, musiikin kuuntelusta ja kitaransoitosta.
Tilaa uutiskirjeemme
Liity uutiskirjeeseemme, jossa on teknisiä vinkkejä, arvosteluja, ilmaisia e-kirjoja ja erikoistarjouksia!
Vielä yksi askel !!!
Vahvista sähköpostiosoitteesi juuri lähettämässäsi sähköpostiviestissä.