Como encontrar e matar um processo de zumbi no Linux

Como encontrar e matar um processo de zumbi no Linux
Um zumbi é uma criatura que era humana e morreu, mas de alguma forma devido a um vírus ou por qualquer motivo que ele acordou novamente. Já está morto, mas está andando e se movendo. Este é o conceito de um zumbi descrito em filmes e romances. Da mesma maneira no Linux, um processo de zumbi é um processo que foi removido do sistema como "extinto", mas ainda assim de alguma forma é executado na memória do sistema é chamado de processo de zumbi. Até que um processo infantil seja eliminado de uma tabela de processos, ele se transforma em um zumbi primeiro.

Um processo no estado terminado é outro nome para isso. É limpo da memória usando seu processo pai. Quando o processo pai não é notificado da mudança, o processo infantil se torna o processo de zumbi e não recebe nenhum sinal de rescisão para que possa deixar a memória. No Linux, sempre que um processo é removido da memória, seu processo pai é informado sobre a remoção. Este processo permanece na memória até notificar seu processo pai.

Isso significa que o processo morto não é removido da memória imediatamente e continua na memória do sistema, tornando -se um processo de zumbi. Para remover um processo de zumbi, o processo pai chama a função Wait (). Depois que a função espera () é chamada em jogo, o processo de zumbi é completamente removido do sistema.

Matando um processo de zumbi

Antes de mudar para matar o processo de zumbi, discutiremos primeiro os riscos do processo de zumbi e as causas do processo de zumbi que ocorre. Além disso, aprenderemos mais sobre o processo de zumbi para facilitar o entendimento do processo de matança.

Qual é a causa do processo de zumbi

Pode haver duas causas principais do processo de zumbi. O primeiro é aquele em que o processo pai não consegue chamar a função wait () quando o processo de criação infantil estiver em execução, o que leva a ignorar o sigchld. Isso pode causar o processo de zumbi. O segundo é aquele em que o outro aplicativo pode afetar a execução do processo pai devido a uma codificação ruim ou conteúdo malicioso.

Em outras palavras, podemos dizer que o processo de zumbi é causado quando o processo dos pais ignora o processo do processo filho muda ou não pode verificar o estado do processo filho, quando o processo filho termina, o PCB não é liberado.

O processo de zumbi representa um risco

O processo de zumbi não representa nenhum risco, eles apenas usam parte da memória no sistema. A tabela de processos é de tamanho pequeno, mas o ID da tabela onde o processo de zumbi é armazenado não pode ser usado até ser liberado pelo processo de zumbi. Mas, caso haja muitos processos de zumbi que reservam a localização da memória e não há espaço para outros processos para outros processos, fica difícil para outros processos executar.

Encontrando um processo de zumbi

Antes de matar o processo de zumbi, é necessário encontrá -los. Para encontrar o processo de zumbi, executaremos o seguinte comando no terminal:

Linux@linux-virtualbox: ~ $ ps aux | egrep "z | extinto"

No comando acima, "PS" significa o estado do processo que é usado para ver o estado do processo que está em execução no sistema junto com o comando PS. Passamos pelo auxiliar de bandeira no qual "A" indica os detalhes de todos os processos associados no terminal, "u" indica os processos que estão na lista de usuários e o "x" indica os processos que não são executados do terminal. Em combinação, podemos dizer que é usado para imprimir todos os processos de execução que são armazenados na memória.

A segunda opção aprovada "egrep" é uma ferramenta de processamento usada para buscar as expressões ou padrões em um local especificado. Por fim, passamos a palavra -chave "z | extinto" que denota o processo de zumbi que deve ser buscado na memória. Quando executarmos o comando, obteremos a seguinte saída, que mostra o processo de zumbi no sistema junto com seu "pid".

Saída:

Usuário PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
Linux 33819 0.0 0.0 18008 724 pts/0 s+ 20:22 0:00 grep -e -cor = auto z | extinto

Os processos de zumbi já são processos mortos, mas o processo pai não consegue ler seu status e não pode ser liberado da memória. Então, o processo morto não pode ser morto. Só podemos fazer para eles permitir que o processo pai leia o estado filho para que ele possa ser executado e removido da tabela de processos. Para isso, executaremos o comando mencionado abaixo.

Linux@linux -virtualbox: ~ $ ps -o ppid = -p 33819

No comando acima, tentamos obter o ID pai do processo de zumbi. Depois de obter o ID dos pais, executaremos o seguinte comando para matar o processo de zumbi enviando o sigchld ao processo pai, que permite ao processo pai ler o estado filho:

Linux@linux -virtualbox: ~ $ kill -s sigchld parent_pid

No comando acima, passamos o sinal para o ID pai para matar o processo de zumbi do ID dos pais passou para ele. Depois que o comando acima for executado, ele simplesmente se moverá para a próxima linha sem imprimir qualquer saída no terminal, caso não exista identificação pai. Para verificar se o processo de zumbi é morto ou não, você pode executar o comando que já executamos para encontrar o processo de zumbi.

Vamos tentar outra maneira de matar o processo de zumbi que é feito matando o próprio processo pai. Esta é a maneira mais eficiente de matar o processo de zumbi, porque ele removerá completamente todo o processo e não permitirá que o zumbi surja novamente. Para isso, executaremos o comando abaixo da balança:

Linux@linux -virtualbox: ~ $ kill -9 parent_pid

Depois de executar o comando acima, permitimos que o sistema mate o processo pai.

Conclusão

Discutimos brevemente o processo de zumbi e também as causas e o procedimento para matar esses processos. Antes de ir para o nosso processo de matança, tentamos explicar os motivos de sua causa e também as maneiras de identificá -las usando comandos simples.