O processo de zumbis não afetará o desempenho ou a lentidão, pois os processos de zumbi não usam recursos do sistema.
Nota: - Praticamente, ainda está usando o PID (que é um recurso limitado), e as estruturas de dados do kernel para o processo ainda estão alocadas. Geralmente, isso não importa muito, mas o uso da memória do kernel pode ser significativo em sistemas com memória muito limitada.
Problem caused by zombie process
Each zombie process retains its process ID . Linux systems have a finite number of process IDs – 32767 by default on 32-bit systems.If zombies are accumulating at a very quick rate ,the entire pool of available PIDs will eventually become assigned to zombie processes, preventing other processes from launching.
Observação : Em sistemas de 64 bits, você pode aumentar o PID máximo, consulte link
No entanto, alguns processos de zumbis não são problema - embora eles indiquem um bug no processo pai em seu sistema.
Explicação:
Quando um processo acaba no Linux, ele não é removido da memória imediatamente - seu descritor de processo permanece na memória.
O status do processo passa a EXIT_ZOMBIE
e o pai do processo é notificado de que o processo filho morreu com o sinal SIGCHLD
.
O processo pai deve então executar a chamada do sistema wait () para ler o status de saída do processo morto e outras informações. Isso permite que o processo pai obtenha informações do processo inativo. Depois que wait () é chamado, o processo zumbi é completamente removido da memória.
Isso normalmente acontece muito rapidamente, então você não verá processos de zumbis acumulados em seu sistema. No entanto, se um processo pai não for programado corretamente e nunca chamar espera (), seus filhos zumbis permanecerão na memória até que eles sejam limpos.
Resolução:
Você não pode matar processos zumbis, pois pode matar processos normais com o sinal SIGKILL - processos zumbis já estão mortos.
Uma maneira de matar zumbis é enviar o sinal SIGCHLD para o processo pai. Este sinal diz ao processo pai para executar a chamada do sistema wait () e limpar seus filhos zumbis. Envie o sinal com o comando kill, substituindo pid no comando abaixo pelo PID do processo pai:
kill -s SIGCHLD pid
Quando o processo que criou os zumbis termina, o init herda os processos zumbis e se torna seu novo pai. (o init é o primeiro processo iniciado no Linux durante a inicialização e recebe o PID 1.)
Nota: - A partir do Linux 3.4, os processos podem emitir a chamada de sistema prctl () com a opção PR_SET_CHILD_SUBREAPER e, como resultado, eles, e não o processo # 1, tornar-se o pai de seus processos descendentes órfãos. Consulte: link
INIT, em seguida, executa a chamada do sistema wait () para limpar seus filhos zumbis, assim o init fará com que os zumbis trabalhem rapidamente. Você pode reiniciar o processo pai depois de fechá-lo.