Como encontrar e matar processos zumbis no Linux

14 de outubro de 2021

Esta é uma dica rápida em encontrar processos zumbis no Linux e depois matá-los. Você também aprender uma coisa ou duas sobre processos e processos zumbis.

Antes de aprender sobre processos zumbis, deixe-me lembrar o que é um processo no Linux.

Em poucas palavras, um processo é uma parte de um programa em execução para desempenho. Pode ser primeiro plano (processo interativo) ou no fundo (não interativo ou processo automático). Pode ser um pai (criador de outros processos durante run-time) ou filho (processo criado por outros).

No Linux, exceto para o primeiro processo init (ou systemd) com PID 0, todos os outros processos tem um processo pai. Processos também têm os seus próprios processos filhos.

Não acredita em mim? Use o comando pstree no Terminal para olhar a árvore do processo para ver a ‘árvore genealógica’ de processos do seu sistema.

O que é um processo zumbi no Linux?

Quando um processo filho morre, o processo pai é informado de modo que possa fazer alguma limpeza como liberação de memória etc. No entanto, o processo filho entra em estado zumbi se o processo pai não tem conhecimento de sua morte. Para o pai, a criança ainda existe, mas o processo filho está realmente morto. Isto é como processos zumbi (também conhecidas como processos extintos) são criados e permanecem no sistema.

Aqui está uma excelente tomada engraçada no processo zumbi por Turnoff.us:

Zumbis desvio

Crédito: Turnoff.us

Você realmente precisa se preocupar com processos zumbis?

Aqui é importante dizer que os processos zumbis não são tão perigosos como o seu nome pode soar.

O problema pode surgir se o sistema tiver RAM limitada ou se há muitos processos zumbis comendo a RAM. Além disso, a maioria dos processos Linux pode ter no máximo conjunto PID de 32768. Se não houver IDs disponíveis para outras tarefas produtivas, seu sistema pode falhar.

Isso raramente acontece, mas é uma possibilidade, especialmente se um programa mal codificado começa induzindo inúmeros processos zumbis.

Nesse caso, seria uma boa idéia para encontrar e matar processo zumbi.

Como encontrar a processos de zumbis?

Um processo no Linux pode ter um dos seguintes estados:

  • D = sono ininterrupto
  • I = ocioso
  • R = rodando
  • S = dormindo
  • T = parado pelo sinal de controle de trabalho
  • T = parado por depurador durante trace
  • Z = zumbi

Mas onde você pode ver os processos e seus respectivos status? Uma maneira fácil é usar o terminal e o comando top.

Vista superior de comando

O comando top mostra processos e seus estados

Como você pode ver na imagem acima, há 250 tarefas totais (ou processos), 1 está em execução, 248 processos estão dormindo e um está em estado de zumbi.

Agora, surge a pergunta: como matar o processo zumbis?

Como encontrar e matar um processo zumbi? Pode um processo zumbi ser morto?

Linux processo zumbis matar

Um processo zumbi já está morto. Como você mata um processo já morto?

Nos filmes de zumbis, você atira os zumbis na cabeça ou os queima. Isso não é uma opção aqui. Você pode queimar o seu computador para matar o processo zumbi, mas isso não é uma solução viável;)

Algumas pessoas sugerem enviar o sinal SIGCHLD para o processo pai. Mas é mais provável que seja ignorado. A outra opção para matar o processo zumbi é matar seu processo pai. Isso soa brutal, mas essa é a única maneira certa de matar processos zombie.

Então, primeiro, vamos listar de processos zumbis para conhecer o seu ID. Você pode conseguir isso por usar o comando ps, como este no terminal.

Comandos para usar no terminal

ps ux | awk '{if($8=="Z+") print}'

A 8ª coluna na saída do ps ux comando exibe o estado de um processo. Você está pedindo para imprimir todas as linhas correspondentes onde o estado de um processo é Z+ (indicando o estado de zumbis).

Depois de identificar seu ID de processo, vamos obter o ID do processo do pai.

Comandos para usar no terminal

ps -o ppid= -p

Como alternativa, você pode combinar os dois comandos acima da seguinte forma, onde fornece diretamente o PID do processo zumbi e o PID de seu processo pai.

Comandos para usar no terminal

ps -A -ostat,pid,ppid | grep -e '[zZ]'

Aqui você obtém o ID do processo pai, então finalmente mate o processo digitando a linha de comando com seu respectivo processo de identificação obtido antes.

Comandos para usar no terminal

kill -9

Matando o processo pai

Matando o processo pai

Você pode verificar se o processo zumbi está morto ou não executando o comando ps novamente ou até mesmo o comando top.

Parabéns! Agora você sabe como eliminar processos zumbis.

Com contribuições de Abhishek Prakash.

Confira também a versão original desse post em inglês
Esse post foi originalmente publicado no site itsfoss.com. Traduzido pela rtland.team

How to Find and Kill Zombie Process in Linux

Propaganda
Blog Comments powered by Disqus.
Propaganda