Hvad er en Zombie processen?

January 19

En zombie proces er en computer proces på en Unix-baseret operativsystem, der er færdig med henrettelse, men stadig har en proces ID-nummer tilbage i operativsystemets proces bord. Det er resterne af et større proces eller program, der undlod at indsamle og udføre alle de exit kommandoer til, når processen afsluttes. Disse processer ikke tager nogen CPU-cyklusser eller hukommelse selv.

Årsag

Defekt programkode ofte fører til processer ikke afsluttes korrekt, hvilket resulterer i zombie processer opstår i kørende programmer. Programmøren har ikke programmeret en forælder proces til at bruge "vente" systemet opfordring til at lade et barn processen kører uafhængigt, mens moderselskabet er suspenderet. Det betyder, at barnet processen ikke returnere en exit statusmeddelelse til den forælder, når det slutter, så den forælder aldrig modtager meddelelse om opsigelse, og barnet processen bliver en zombie proces.

Overvejelser

Må ikke haste til at opsige zombie processer, så snart du finder dem. Sommetider forælder processer forlade zombie processer på formålet, så den samme proces ID-nummeret ikke er givet til to separate processer under programmets levetid. Hvis du ser kun nogle få zombie processer på et tidspunkt, der ikke er vedvarende, kan forældre processer til sidst afslutte dem. Men hvis dit system begynder at bremse med en stor mængde af processer, der kører, afslutning nogle zombie proces kan forbedre ydeevnen.

Lokalisering Zombies

Ved hjælp af en Unix-kommando værktøj til at udføre kommandoen "ps" - en forkortelse for proces status - lister alle processer i øjeblikket kører på et system. Enhver proces angivet som "z" under Stat søjle er en zombie proces. Enhver af disse processer, der findes, mens den overordnede proces eller programmet stadig kører er tegn på fejlbehæftet kode, mens zombie processer kører uden en forælder program normalt repræsenterer en fejl i selve operativsystemet.

Killing Zombies

Zombie processer bevarer proces id-numre i processen indgang bordet, så at have for mange af dem gør få dit system til at køre ud af disse numre. Men du kan med magt opsige zombie processer for at frigøre deres proces- id-værdier i tabellen. Afslut dem ved at bruge "dræbe -s SIGCHLD <PPID>" kommando, hvor "PPID" repræsenterer zombie forældrenes proces-id. Alternativt kan du med magt dræbe forælder processer til at opsige alle børn og zombie processer, de har lavet så godt.


relaterede artikler