Respostas:
Oh Deus! Não não não. Não use kill -9.
Não dá ao processo a chance de limpar:
desligar conexões de soquete
limpar arquivos temporários
informar seus filhos que está indo embora
redefinir suas características de terminal e assim por diante e assim por diante.
Geralmente, envie 15 e aguarde um ou dois segundos e, se isso não funcionar, envie 2 e, se isso não funcionar, envie 1. Se isso não funcionar, REMOVA O BINÁRIO, pois o programa está se comportando mal!
Não use kill -9. Não traga a colheitadeira apenas para arrumar o vaso de flores.
Processo de zumbi (na verdade agora eles são chamados <defunct>
) não é realmente um processo. É apenas uma entrada na tabela de processos, para que o processo pai possa wait()
executar syscall .
Você não deve se preocupar com eles. Eles não ocupam nenhum recurso, desaparecem quando o pai ou a mãe chama wait()
quando o próprio pai morre.
É um processo que foi completamente desalocado, mas ainda existe na tabela de processos. Compare isso com um processo órfão, cujo pai morreu, mas ainda está em execução.
Aqui estão alguns conselhos para se livrar deles.
Já existe uma resposta aceita: você PODE matar o processo de zumbi. Anexe com o depurador ao processo pai e chame a função waitpid. Por exemplo: - vamos supor que o pai tenha PID = 100, o processo zumbi tenha PID = 200
$ gdb -p 100
(gdb) call waitpid(200, 0, 0)
(gdb) quit
Um processo zumbi não possui recursos alocados, exceto a entrada na árvore de processos. Isso acontece quando um processo é concluído, mas o processo pai ainda não o colheu (ou seja, foi wait
editado).
Você pode tentar forçar o pai a fazer isso se desejar enviando um SIGCHLD ( kill -20
) ao pai, mas não há garantia de que o pai o honrará.
Você as verá frequentemente por curtos períodos de tempo (por exemplo, enquanto visualiza a árvore de processos usando top) - isso é normal; No intervalo de tempo entre o tempo que um processo filho é concluído e o pai faz uma pesquisa para ele - o processo filho aparecerá como um zumbi.
No entanto, se você observar processos zumbis que existem continuamente - o que não é normal - ainda não há motivo para preocupação - novamente, pois não há recursos alocados para um processo inoperante - geralmente significa que o aplicativo foi mal escrito por desenvolvedores ruins.
O único momento em que você deve se preocupar com os processos zumbis é quando você vê muitos deles, por exemplo, se o mesmo aplicativo ruim mencionado acima for colocado sob carga.
Temos muitos desenvolvedores de baixa qualidade onde trabalho, e por isso tenho o privilégio de lidar com esses problemas e aprender todo tipo de coisas inúteis enquanto o faço. De fato - minha equipe costuma recorrer aos scripts de baixa qualidade escritos por desenvolvedores de baixa qualidade em entrevistas - se o candidato puder escolher que o script é realmente louco e nos dizer por que é ruim, ele tem um bom pé na porta.
Quanto à espingarda virtual ...
$ shoot <pid>
#! / bin / sh vítima = `ps -e -o pid, ppid | egrep "^ \ s * $ 1 \ b" | awk '{print $ 2}' ' vítima \ _name = `ps -e -o pid, cmd | egrep "^ \ s * $ {vítima} \ b" | cabeça -n 1 | awk '{print $ 2}' ' #kill $ {vítima} eco "Matou $ {nome_da_ vítima}."
E lembre-se: sempre atire na cabeça deles.
Um processo zumbi é um processo que terminou de executar, mas ainda está listado na tabela de processos.
kill -9 [parent process_name] irá colocá-lo para baixo, com extremo preconceito.