Zombie-prosess. Ikke alle har hørt om dette interessante, men skummelt ordet relatert til Linux-operativsystemet. På en personlig datamaskin kan det hende at zombieprosesser ikke er en trussel for en vanlig bruker, men når det gjelder Linux-servere, må disse prosessene identifiseres og stoppes.

Slike prosesser kan forårsake problemer med systemets prosessbord og i sin tur tukle med at maskinen fungerer. Derfor vil vi i denne artikkelen diskutere zombieprosesser i detalj, sammen med en omfattende guide for å finne og drepe zombieprosesser på en Linux-maskin.

Hva er Zombie-prosesser?

Men før alt dette er det viktig at du vet hva zombieprosesser egentlig er. Dette er ingenting annet enn døde og nedlagte prosesser som opptar plass på systemets prosessbord. EN prosesskontrollblokk eller PCB er en datastruktur som lagrer detaljer knyttet til individuelle prosesser som kjører på systemet ditt.

Prosesstabellen består av prosess-ID, en lenke til PCB og annen nyttig informasjon relatert til prosessen. Zombie-prosesser har sine egne prosess-ID-er og informasjon om minnestyring. Siden Linux OS har et begrenset antall tilgjengelige prosess-ID-er, kan andre prosesser ikke bruke PID-ene før zombieprosessen stopper.

instagram viewer

Selv om en eller to zombieprosesser ikke vil forårsake forstyrrelser eller ytelsesproblemer på datamaskinen din, a et stort antall slike prosesser kan skade systemets arbeidsflyt ved å oversvømme prosessbordet og ressurser.

Hva forårsaker zombieprosesser på Linux?

For å forstå den underliggende årsaken til en zombieprosess i detalj, må du lære hvordan prosesser starter og stopper i Linux. Linux-operativsystemet overvåker alle kjørende prosesser og demoner på en datamaskin. De prosessbord er en liste over strukturer som inneholder alle prosessene som for øyeblikket kjører på maskinen din.

Hver prosessoppføring i prosesstabellen består av en lenke til prosesskontrollblokk av den spesifikke prosessen. PCB lagrer detaljene knyttet til den aktuelle prosessen. Disse detaljene inkluderer:

  1. Prosesstilstand: Den nåværende tilstanden til prosessen
  2. Prosessnummer: Et unikt nummer som brukes til å identifisere prosessen
  3. Programteller: Inneholder informasjon relatert til neste instruksjon
  4. Registrerer: Liste over alle CPU-registerene som brukes av prosessen
  5. Åpne fillisten: Filer som brukes av prosessen
  6. CPU planleggingsinformasjon: Inneholder informasjon tilknyttet CPU-tid og ressurser som er tildelt prosessen
  7. Informasjon om minnestyring: Inkluderer detaljer om mengden minne som brukes av prosessen
  8. I / O-informasjon: Liste over inngangs- eller utdataenheter som brukes av prosessen

Linux bruker følgende prosesstilstander for å beskrive alle prosessene.

  • R: Kjører prosess
  • S: Soveprosess
  • D: Uavbrutt søvnsprosess
  • T: Avsluttet prosess
  • Z: Zombie-prosess

Når en prosess fullfører oppgaven, blir prosesstilstanden satt til Zombie eller Z. Hver prosess har en foreldreprosess som kaller en familie av funksjoner navngitt vente() som venter på tilstandsendringen av en prosess. For eksempel hvis prosesstilstanden endres fra Løping til Zombie, den vente() metoden vil bli utløst.

De vente() metoden sletter vanligvis prosesskontrollblokken relatert til den zombieprosessen, og fjerner deretter oppføringen av prosessen fra prosessbordet.

Men noen ganger, på grunn av den dårlige utviklingen av et program, kaller foreldreprosessen ikke vente() funksjon. Og som et resultat sletter ikke systemet PCB-en for zombieprosessen. Prosesstabelloppføringen for den spesifikke prosessen forblir også intakt.

Dette gir zombieprosessen en uendelig levetid. Siden systemet ikke kan drepe prosessen, blir prosessoppføringen aldri slettet, og PID blir aldri frigjort.

Lære mer: Måter å drepe programmer som ikke svarer i Linux

Hvordan finne zombieprosesser?

Det første trinnet for å fjerne zombieprosesser på systemet ditt er å analysere hvilken prosess som har Zombie prosesstilstand. Selv om du ikke vil kunne drepe disse prosessene direkte, siden systemet allerede har fjernet dem fra minnet, kan du drepe foreldreprosessen som er knyttet til dem.

Først må du sjekke om systemets prosessbord har en zombieprosess. Du kan enkelt gjøre det ved å bruke topp kommando. Bare åpne terminalen og skriv:

topp

Du vil se en utgang som ligner på denne. Legg merke til antall zombieprosesser øverst i terminalvinduet. Hvis utgangen er null, har du ingenting å bekymre deg for.

Du kan liste informasjon relatert til disse zombieprosessene ved hjelp av piping ps-kommandoen med egrep. Egrep er en utvidelse av grep-kommandoen i Linux som behandler alle mønstre som en utvidet regex-streng.

I slekt: Nybegynnerveiledningen til vanlige uttrykk med Python

Skriv inn følgende kommando for å liste opp alle zombieprosessene:

ps aux | egrep "Z | nedlagt"

Den nevnte kommandoen vil se etter linjer som inneholder en av dem Z eller nedlagt i utdata generert av ps-kommandoen. Utgangen består av en liste over zombieprosesser som kjører på systemet ditt.

Drepende zombieprosesser ved hjelp av drepekommandoen

Nå som du vet hvilke zombieprosesser som for tiden spiser systemressursene dine, er det på tide å drepe disse prosessene.

Selv om den enkleste måten å drepe zombieprosesser på er å starte datamaskinen på nytt, er dette noen ganger ikke et mulig alternativ, spesielt hvis du administrerer en server.

For å drepe zombieprosesser uten å stenge serveren din, noter deg prosess-ID-en for zombieprosesser. Fra forrige avsnitt kan vi se at PID for zombieprosessen var 18614. Bruk deretter denne PID-en for å finne ID-en til foreldreprosessen.

ps -o ppid = -p 18614

Produksjon:

18613

Kontroller om foreldreprosess-ID-en eksisterer ved hjelp av ps kommando.

ps -e | grep 18613

Nå som vi har bekreftet eksistensen av foreldreprosessen, er det på tide å drepe den. Send meg -SIGKILL flagg med drepe kommandoen som følger:

sudo kill -SIGKILL 18613

Når du har drept foreldreprosessen, vil systemet slette zombieprosessen og fjerne den automatisk fra prosessbordet.

Administrere prosesser effektivt på Linux

Hver systemadministrator må prioritere overvåkingsprosesser som kjører på en Linux-maskin. Selv om zombieprosesser ikke nødvendigvis er skadelige for systemet ditt, kan de forårsake ytelsesproblemer hvis de finnes i et stort antall.

Hvis du er en nybegynner Linux-bruker og ikke aner hvordan Linux-operativsystemet styrer prosesser, er det et godt sted å starte å lære hva som er prosesser først.

E-post
Hva er en prosess i Linux?

Å forstå prosess og jobber er et sentralt aspekt for å få tak i Linux. Her er hva du trenger å vite.

Les Neste

Relaterte temaer
  • Linux
  • Linux
  • Behandling
Om forfatteren
Deepesh Sharma (45 artikler publisert)

Deepesh er Junior Editor for Linux på MUO. Han har skrevet informasjonsinnhold på internett i over 3 år. På fritiden liker han å skrive, høre på musikk og spille gitaren.

Mer fra Deepesh Sharma

Abonner på vårt nyhetsbrev

Bli med på nyhetsbrevet vårt for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!

Ett steg til…!

Bekreft e-postadressen din i e-posten vi nettopp sendte deg.

.