Hva er en zombie-prosessen?

En zombie prosessen er en datamaskin prosess på et Unix-basert operativsystem som er ferdig utførelse, men har fortsatt en prosess ID-nummer igjen i operativsystemets prosess bord. Det er restene av en større prosess eller et program som ikke klarte å samle inn og utføre alle de exit kommandoer for når prosessen avsluttes. Disse prosessene tar ikke opp noen CPU-sykluser eller minne om.

Forårsake

Feil programkode fører ofte til prosesser og ikke avslutter riktig, noe som resulterer i zombie prosesser som oppstår i programmer som kjører. Programmereren har ikke programmert en overordnet prosess for å bruke "vent" systemkall for å la et barn prosess for å utføre selvstendig mens foreldrene er suspendert. Dette betyr at barnet prosessen ikke returnere en exit status melding til foreldre når det opphører, slik at foreldre får aldri varsel om oppsigelse, og barnet prosessen blir en zombie prosess.

betraktninger

Ikke rush å avslutte zombie prosesser så snart du finner dem. Noen ganger overordnede prosesser forlate zombie prosesser med vilje, slik at den samme prosessen ID-nummer ikke er gitt til to separate prosesser i løpet av programmets levetid. Hvis du ser bare noen få zombie prosesser på et tidspunkt som ikke er vedvarende, kan den overordnede prosesser til slutt avslutte dem. Men hvis systemet begynner å avta med en stor mengde prosesser som kjører, avslutte noen zombie prosessen kan forbedre ytelsen.

Finne Zombies

Ved hjelp av en Unix kommando verktøy for å utføre "ps" kommandoen - forkortelse for prosessen status - viser alle prosessene som kjører på et system. Enhver prosess oppført som "z" under Stat kolonnen er en zombie prosess. Noen av disse prosessene som eksisterer, mens den overordnede prosessen eller programmet er fortsatt kjører er en indikasjon på feil kode, mens zombie prosesser som kjører uten en forelder program vanligvis representerer en feil i selve operativsystemet.

Killing Zombies

Zombie prosesser beholde prosess ID-numre i prosessen oppføring tabellen, så har for mange av dem gjør føre til at systemet til å kjøre ut av disse tallene. Du kan imidlertid tvangsflyttet avslutte zombie prosesser for å frigjøre deres prosess ID verdiene i tabellen. Avslutte dem ved hjelp av "kill -s SIGCHLD <ppid>" kommandoen, der "ppid" representerer zombie foreldrenes prosess ID. Alternativt kan du tvangsflyttet drepe ordnede prosesser for å avslutte alle barn og zombie prosesser de har opprettet også.