Halloween no Linux: como matar processos zumbis

selo de halloween

O dia dos mortos está chegando e é por isso que queremos fazer este pequeno tutorial da LxA para falar sobre o processos zumbis e como podemos matá-los. A primeira coisa a dizer é o que é o processo zumbi, e isso é que como você sabe, o kernel do Linux possui um subsistema para gerenciar os processos e trabalha com o planejador para criar, variar a prioridade, enviar ou remover o fluxo de processamento da CPU e processos de eliminação. Bem, esta parte do kernel, como o resto dos sistemas do tipo Unix, distingue entre vários estados de processos ...

Então, podemos encontrar isso um processo pode estar no estado adormecido (S), ou seja, adormecido. Também processos em estado de execução (R) que são aqueles que estão atualmente em execução ou em execução, processos em espera (D) que estão parados esperando para serem atendidos, gestpt (T) ou suspensos, e também os zumbis (Z) ou mortos. Um processo zumbi ou morto é aquele que já foi encerrado com sucesso, mas tem certos recursos do sistema sequestrados, pois o Linux ainda está salvando-o na tabela de processos. Você já sabe que quando um processo termina, ele não deve ficar neste estado, mas se completa e o kernel libera os recursos para que outros processos possam utilizá-los, basicamente libera a RAM ocupada ...

Bem, como não é interessante ter este tipo de processos zumbis, embora não sejam tão frequentes, podemos procurá-los e eliminá-los conforme indicado aqui. A primeira coisa é descobrir se existem processos zumbis em nossa distro e para isso podemos nos ajudar ferramentas como top ou como ps. Por exemplo, uma destas duas opções:

ps -el | grep 'Z'

ps aux | grep defunct

E uma vez detectados, podemos Mate ele diretamente com:

kill -HUP `ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]’ | awk ‘{print $2}’`

Embora outra alternativa seja encontrar os processos pai, pois para matar um processo de zumbi Você tem que matar os processos pais que o sustentam, como você pode ter deduzido:

ps -eo pid,ppid | grep <PID>

kill -9 <PPID>

Você terá que substituir pelo ID do processo zumbi que você encontrou e para matá-lo com kill, use o ID do processo pai substituindo no exemplo, obviamente.