Bytes Suspeitos

Anotações sobre forense digital

Processos zumbis, "defunct" ou "zombie"

 
Processes marked defunct are dead processes (so-called "zombies") that remain because their parent has not destroyed them properly.
 

Como são formados

 

De forma normal quando um processo termina sua execução com sucesso, ele libera os recursos alocados, desocupa a memória e avisa que “terminou” ao processo que lhe deu origem (processo pai).
Neste momento, o processo pai deve fazer a leitura do estado final do processo do filho que terminou.
Quando a leitura termina de ser executada, o processo filho (que terminou) é removido da memória e da tabela de processos.
A seqüência de operações acima é muito rápida.

 

Os processos zumbis aparecem quando o processo pai, por alguma razão, não consegue ler o estado do processo filho.
Neste caso, o processo filho fica aguardando o processo pai indefinidamente pela leitura do status do processo pai.
Então como conseqüência, o processo filho não é removido da memória nem da tabela de processos, embora não esteja mais executando.

 

Observações

 
  • Os zumbis são previstos pelo Linux.
  • São inócuos na maioria das vezes.
  • Podem ter o PID 1 como pai, que é o próprio init. O init executa um processo de limpeza periódica que acaba por remover naturalmente os zumbis dele do sistema.
  • Visualizar pelos comandos (Status Z significa "defunct" ou "zombie"):
    • ps -el | grep Z
    • ps axu | grep Z
  • Não é possível terminar processos zumbis. Eles já estão finalizados.
  • Para resolver a situação se deve informar ao processo pai que “sua criança” terminou pelo comando (ppid é número do PID do processo pai):
    kill -s SIGCHLD ^ppid^
 

Referências externas

 

Histórico
DataVersãoBase/AlteraçãoAutor
6-abr-20201.0Man e refCH4172

Anotação:1056, última modificação:7-Apr-2020, tema:UnixLinux