Glossário/Quando algo dá errado
Processo zumbi
Também: processo defunct, processo morto
Resposta rápida
Um processo zumbi é um processo que já terminou de rodar, mas ainda tem uma entrada na tabela de processos, porque o processo principal dele ainda não recolheu o status de saída. Ele não usa CPU e quase não ocupa memória.
Quando um processo termina, o sistema guarda um pequeno registro para que o processo principal possa saber como ele saiu. Normalmente o processo principal lê esse registro na hora e a entrada some. Se ele nunca ler, o processo encerrado continua na lista como zumbi.
Alguns zumbis não fazem mal. Um número que cresce sem parar aponta para um bug no programa principal.
Como encontrar processos zumbis no Mac
No Terminal, execute ps -axo pid,ppid,stat,comm | awk '$3 ~ /^Z/'. Cada linha é um zumbi, e a coluna PPID mostra o processo principal responsável por ele.
Como se livrar de um processo zumbi
Não dá para matar um zumbi, porque ele já saiu. A solução está no processo principal. Encerre ou reinicie o app principal, e o zumbi é entregue ao launchd, que faz a limpeza.
Não encerre o launchd nem outros processos do sistema para limpar zumbis. Se o processo principal for do sistema, reiniciar o Mac os elimina.
Como encontrar o processo principal de um zumbi
Na coluna de comando completo de ps, um zumbi aparece como <defunct>, porque o programa dele já saiu. O processo a tratar é o principal.
- Execute
ps -axo pid,ppid,stat,comm | awk '$3 ~ /^Z/'para listar os zumbis. O Z na coluna STAT indica um zumbi. - Anote o número da coluna PPID.
- Execute
ps -p <PPID> -o pid,user,commandpara ver qual programa é o processo principal. - No Monitor de Atividade, escolha Visualizar > Todos os Processos, Hierarquicamente para ver a mesma árvore de processos principais e secundários.
- Trate o processo principal. Se é um app que você abriu, encerre-o e abra-o de novo. Se é um shell ou um script no Terminal, feche essa janela ou pare o script. Se é um processo do sistema, reinicie o Mac.
Normal ou preocupante
Um programa principal recolhe o status de saída de um processo secundário com a família de chamadas de sistema wait. Um programa que inicia processos secundários mas nunca espera por eles deixa zumbis para trás. Isso é um bug no programa principal, e só o desenvolvedor dele pode resolvê-lo de vez.
Ver um zumbi por um instante é normal. Ele existe entre o momento em que um processo sai e o momento em que o processo principal lê o status de saída, o que em geral é muito rápido.
Vale uma olhada quando o mesmo processo principal mantém muitos zumbis por perto, ou quando o número deles não para de crescer ao longo de horas. Para contá-los, execute ps -axo stat | grep -c '^Z'. Para ver os limites de processos no seu Mac, execute sysctl kern.maxproc kern.maxprocperuid.
Processos zumbis, órfãos e travados são diferentes
Esses três termos costumam ser confundidos, e cada um pede uma solução diferente.
- Um zumbi já terminou de rodar. Só sobrou a entrada dele na tabela de processos.
- Um órfão ainda está rodando, mas o processo principal dele saiu. O macOS o entrega ao launchd, o PID 1, que passa a ser o novo processo principal.
- Um processo travado ainda está rodando, mas parado, e muitas vezes aparece como Não Responde no Monitor de Atividade. Ao contrário de um zumbi, ele pode ser encerrado ou forçado a encerrar.
O que não fazer
Zumbis em pequeno número não fazem mal, então não há motivo para correr riscos para eliminá-los.
- Não execute
kill -9no PID do zumbi. Ele já saiu, então o sinal não tem efeito. - Não encerre o launchd nem outros processos do sistema para eliminar zumbis. Reiniciar faz a mesma coisa com segurança.
- Não encerre o processo principal sem conferir o que ele é. Se for um app com documentos abertos, salve o seu trabalho antes.
Perguntas frequentes
O que é um processo zumbi no Mac?
É um processo que já terminou, mas continua na lista porque o processo principal dele não recolheu o status de saída. Ele não usa CPU.
Como matar um processo zumbi?
Não dá para matá-lo diretamente. Encerre ou reinicie o processo principal dele, mostrado na coluna PPID de ps, e o zumbi desaparece.
Processos zumbis fazem mal?
Alguns, não. Cada um ocupa um lugar na tabela de processos, então um número grande e crescente pode acabar causando problemas e aponta para um programa principal com bug.
Por que o kill -9 não remove um processo zumbi?
Um zumbi não está rodando, então não há nada para o sinal interromper. Só o processo principal recolhendo o status de saída dele, ou saindo, o remove.
Reiniciar o Mac remove os processos zumbis?
Sim. Reiniciar termina todos os processos, incluindo os zumbis e os processos principais deles.
Processos zumbis são sinal de malware?
Não. Eles fazem parte do jeito normal como os processos Unix saem. Muitos zumbis de um mesmo processo principal em geral significam que aquele programa tem um bug.
Relacionados
Vem do Windows? Veja Gerenciador de Tarefas para Mac ou as melhores alternativas ao Monitor de Atividade. Ou navegue por todos os termos do glossário.