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.