Zombie-proces. Ikke alle har hørt om dette interessante, men skræmmende ord relateret til Linux-operativsystemet. På en personlig computer er zombieprocesser muligvis ikke en trussel mod en almindelig bruger, men når det kommer til Linux-servere, skal disse processer identificeres og stoppes.
Sådanne processer kan forårsage problemer med dit systems procesbord og til gengæld manipulere med maskinens korrekte funktion. Derfor vil vi i denne artikel diskutere zombieprocesser i detaljer sammen med en omfattende guide til at finde og dræbe zombieprocesser på en Linux-maskine.
Hvad er zombieprocesser?
Men før alt dette er det vigtigt, at du ved, hvad zombieprocesser virkelig er. Disse er intet andet end døde og nedlagte processer, der optager plads på systemets procesbord. EN proceskontrolblok eller PCB er en datastruktur, der gemmer detaljer tilknyttet individuelle processer, der kører på dit system.
Processetabellen består af proces-ID'et, et link til printkortet og anden nyttig information relateret til processen. Zombie-processer har deres egne proces-id'er og hukommelsesstyringsinformation. Da Linux OS har et begrænset antal tilgængelige proces-id'er, kan andre processer ikke bruge PID'erne, før zombie-processen stopper.
Selvom en eller to zombieprocesser ikke vil medføre forstyrrelses- eller ydeevneproblemer på din computer, a et stort antal af sådanne processer kan skade dit systems arbejdsgang ved at oversvømme procestabellen og ressourcer.
Hvad forårsager zombieprocesser på Linux?
For at forstå den underliggende årsag til en zombieproces i detaljer skal du lære, hvordan processer starter og stopper i Linux. Linux-operativsystemet overvåger alle kørende processer og dæmoner på en computer. Det proces tabel er en liste over strukturer, der indeholder alle de processer, der i øjeblikket kører på din maskine.
Hver procesindgang i procestabellen består af et link til proceskontrolblok af den specifikke proces. Printkortet gemmer de detaljer, der er knyttet til den pågældende proces. Disse detaljer inkluderer:
- Processtilstand: Den aktuelle tilstand af processen
- Procesnummer: Et unikt nummer, der bruges til at identificere processen
- Programtæller: Indeholder oplysninger relateret til den næste instruktion
- Registrerer: Liste over alle CPU-registre, der bruges af processen
- Åbn fillisten: Filer, der bruges af processen
- Oplysninger om CPU-planlægning: Indeholder oplysninger tilknyttet CPU-tid og ressourcer, der er allokeret til processen
- Information om hukommelsesadministration: Indeholder detaljer om den mængde hukommelse, der bruges af processen
- I / O-oplysninger: Liste over input- eller outputenheder, der bruges af processen
Linux bruger følgende procestilstande til at beskrive alle dets processer.
- R: Kører proces
- S: Soveproces
- D: Uafbrydelig soveproces
- T: Afsluttet proces
- Z: Zombie-proces
Hver gang en proces fuldfører den tildelte opgave, indstilles dens procestilstand som Zombie eller Z. Hver proces har en overordnet proces, der kalder en familie af funktioner navngivet vente() der venter på statens ændring af en proces. For eksempel, hvis procestilstanden ændres fra Løb til Zombie, det vente() metode udløses.
Det vente() Metoden sletter normalt proceskontrolblokken relateret til zombieprocessen og fjerner derefter indtastningen af denne proces fra procestabellen.
Men nogle gange på grund af den dårlige udvikling af et program kalder forældreprocessen ikke vente() fungere. Og som et resultat sletter systemet ikke printkortet i zombieprocessen. Processtabellen for den specifikke proces forbliver også intakt.
Dette giver zombieprocessen en uendelig levetid. Da systemet ikke kan dræbe processen, slettes procesindgangen aldrig, og PID frigøres aldrig.
Lær mere: Måder at dræbe programmer, der ikke svarer i Linux
Hvordan finder man zombieprocesser?
Det første skridt til at fjerne zombieprocesser på dit system er at analysere, hvilken proces der har Zombie procestilstand. Mens du ikke er i stand til at dræbe disse processer direkte, da systemet allerede har fjernet dem fra hukommelsen, kan du dræbe den overordnede proces, der er knyttet til dem.
Først skal du kontrollere, om dit systems proces tabel har en zombie proces. Du kan gøre det let ved hjælp af top kommando. Du skal blot åbne din terminal og skrive:
top
Du vil se en output svarende til denne. Bemærk antallet af zombieprocesser øverst i terminalvinduet. Hvis output er nul, har du intet at bekymre dig om.
Du kan liste oplysninger relateret til disse zombieprocesser ved hjælp af piping ps-kommandoen med egrep. Egrep er en udvidelse af grep-kommandoen i Linux, der behandler alle mønstre som en udvidet regex-streng.
Relaterede: Begyndervejledningen til regelmæssige udtryk med Python
Skriv følgende kommando for at liste alle zombieprocesser:
ps aux | egrep "Z | defunct"
Den førnævnte kommando vil kigge efter linjer, der indeholder begge Z eller nedlagt i output, der genereres af ps-kommandoen. Outputtet består af en liste over zombieprocesser, der kører på dit system.
Dræber zombieprocesser ved hjælp af kill-kommandoen
Nu hvor du ved, hvilke zombieprocesser der i øjeblikket spiser dine systemressourcer, er det tid til at dræbe disse processer.
Mens den nemmeste måde at dræbe zombieprocesser på er at genstarte din computer, er dette nogle gange ikke en mulig mulighed, især hvis du administrerer en server.
For at dræbe zombieprocesser uden at lukke din server ned skal du notere proces-id'et for enhver zombieproces. Fra det foregående afsnit kan vi se, at PID for zombieprocessen var 18614. Brug derefter denne PID til at finde ID'et for den overordnede proces.
ps -o ppid = -p 18614
Produktion:
18613
Kontroller, om det overordnede proces-id findes ved hjælp af ps kommando.
ps -e | grep 18613
Nu hvor vi har bekræftet eksistensen af den overordnede proces, er det tid til at dræbe den. Gå forbi -SIGKILL flag med dræbe kommando som følger:
sudo kill -SIGKILL 18613
Når du har dræbt den overordnede proces, sletter systemet zombieprocessen og fjerner den automatisk fra procestabellen.
Administration af processer effektivt på Linux
Hver systemadministrator skal prioritere overvågningsprocesser, der kører på en Linux-maskine. Selvom zombieprocesser ikke nødvendigvis er skadelige for dit system, kan de forårsage ydeevneproblemer, hvis de findes i et stort antal.
Hvis du er en nybegynder Linux-bruger og ikke har nogen idé om, hvordan Linux-operativsystemet styrer processer, er det et godt sted at starte at lære, hvad der er processer først.
At forstå proces og job er et nøgleaspekt for at få styr på Linux. Her er hvad du har brug for at vide.
Læs Næste
- Linux
- Linux
- Forarbejdning

Deepesh er Junior Editor til Linux på MUO. Han har skrevet informativt indhold på internettet i over 3 år. I sin fritid nyder han at skrive, lytte til musik og spille sin guitar.
Abonner på vores nyhedsbrev
Deltag i vores nyhedsbrev for tekniske tip, anmeldelser, gratis e-bøger og eksklusive tilbud!
Et trin mere !!!
Bekræft din e-mail-adresse i den e-mail, vi lige har sendt dig.