O que são processos zumbis?

126

Com comandos como top e o baseado em gui System Monitor eu posso ver que no momento eu tenho vários processos zumbis.

O que são processos zumbis?

Eles afetam o desempenho do sistema ou o aplicativo para o qual eles são zumbis. Eles usam muita memória ou alguma memória?

    
por Jesper 14.06.2011 / 00:27
fonte

3 respostas

150

Zombies são processos DEAD. Eles não podem ser 'kill' (você não pode matar o DEAD). Todos os processos eventualmente morrem e, quando o fazem, tornam-se zumbis. Eles quase não consomem recursos, o que é esperado porque estão mortos! A razão para os zumbis é que o pai do zumbi (processo) pode recuperar o status de saída do zumbi e as estatísticas de uso de recursos. O pai sinaliza ao sistema operacional que ele não precisa mais do zumbi usando uma das chamadas do sistema wait ().

Quando um processo é interrompido, seus processos filhos tornam-se filhos do processo número 1, que é o processo init. Init está "sempre" esperando que as crianças morram, para que elas não permaneçam como zumbis.

Se você tem processos zumbis, isso significa que os zumbis não foram esperados pelos pais (veja PPID exibido por ps -l ). Você tem três opções: Corrigir o processo pai (aguarde); mate o pai; ou viver com isso. Lembre-se que viver com isso não é tão difícil, porque os zumbis ocupam pouco mais de uma linha extra na saída do ps.

Os zumbis podem ser identificados na saída do comando Unix ps pela presença de um "Z" na coluna STAT. Zumbis que existem por mais de um curto período de tempo normalmente indicam um erro no programa pai. Tal como acontece com outros vazamentos, a presença de alguns zumbis não é preocupante em si, mas pode indicar um problema que cresceria sério sob cargas mais pesadas.

Para remover zumbis de um sistema, o sinal SIGCHLD pode ser enviado ao pai manualmente, usando o comando kill. Se o processo pai ainda se recusar a colher o zumbi, o próximo passo seria remover o processo pai. Quando um processo perde seu pai, o init se torna seu novo pai. O Init executa periodicamente a chamada do sistema de espera para obter zumbis com o init como pai.

Existem também processos órfãos que são processos de computador cujo processo pai foi finalizado ou finalizado.

Um processo pode ficar órfão durante a chamada remota quando o processo do cliente falha após fazer uma solicitação do servidor.

Os órfãos desperdiçam recursos do servidor e podem potencialmente deixar um servidor com problemas (Esta é a maior diferença de recursos entre zumbis e órfãos (exceto se você vir algum filme zumbi órfão). No entanto, existem várias soluções para o problema do processo órfão:

  1. A exterminação é a técnica mais usada; Neste caso, o processo órfão é morto.

  2. Reencarnação é uma técnica na qual as máquinas tentam periodicamente localizar os pais de qualquer computação remota; em que ponto processos órfãos são mortos.

  3. A expiração é uma técnica em que cada processo é distribuído por um determinado período de tempo para terminar antes de ser morto. Se necessário, um processo pode "pedir" mais tempo para terminar antes que o tempo alocado expire.

Um processo também pode ser órfão em execução na mesma máquina que seu processo pai. Em um sistema operacional semelhante ao UNIX, qualquer processo órfão será imediatamente adotado pelo processo especial do sistema "init". Essa operação é chamada de re-parenting e ocorre automaticamente. Embora tecnicamente o processo tenha o processo "init" como pai, ele ainda é chamado de processo órfão, pois o processo que originalmente o criou não existe mais.

Mais informações:

link

link

link

Como identificar e matar o processo de suspensão, quando o sistema trava e reage lentamente na entrada do usuário?

Killing um processo em execução em uma máquina Ubuntu remotamente a partir de uma máquina Windows que está em LAN

    
por Luis Alvarado 14.06.2011 / 00:39
fonte
19

Processos zumbis (também mostrados como <defunct> ), não são processos reais. Eles são apenas entradas na tabela de processos do kernel. Este é o único recurso que eles consomem. Eles não consomem nenhuma CPU ou RAM. O único perigo de ter zumbis, está ficando sem espaço na tabela de processos (você pode usar cat /proc/sys/kernel/threads-max para ver quantas entradas são permitidas no seu sistema).

Eles aparecem apenas quando o processo pai (ou seja, processa qual fork()'ed deles) está ativo, mas ainda não chamou a função de sistema wait() . Quando o pai morre, os zumbis são wait()'ed por init e desaparecem.

    
por vartec 14.06.2011 / 11:36
fonte
6

Quando um child process termina, sua morte é comunicada aos seus pais para que os pais tomem alguma ação apropriada.

Um process que está aguardando que seu pai aceite seu código de retorno é chamado de processo zumbi .

Eles têm completed their execution , mas ainda tem um entry no process table .

    
por Prateek Joshi 14.10.2015 / 18:11
fonte