Postando esta pergunta porque fiquei surpreso ao não encontrá-la diretamente respondida; desculpas se esta é uma duplicata - eu olhei!
Eu ouvi isso kill -9
ou kill -SIGKILL
é ruim, mas não entendo o porquê. Se eu não deveria, kill -9
o que devo fazer para matar um processo?
kill -9
it ", OP diz " ótimo, isso funcionou! Vou lembrar disso a partir de agora! ", E B chega para avisar que "a esperakill -9
é perigosa! " Somente depois do fato.Respostas:
SIGKILL
retira o tapete do seu processo de execução, encerrando-o imediatamente. Para programas muito simples, tudo bem; na prática, porém, existem muito poucos programas "simples".Nos bastidores, até os programas aparentemente triviais realizam todo tipo de trabalho transacional do qual precisam limpar antes de terminar (pense no
finally
bloco em Java e outras linguagens de programação), como fechar identificadores de recursos, excluir arquivos temporários e liberar dados de memória para o disco. Você não pode prever quando um programa pode estar fazendo algo assim.Se você tiver sorte, não notará nada de errado se enviar um
SIGKILL
, mas não poderá ter sorte para sempre, e talvez não saiba que algo deu errado até que seja tarde demais para recuperar o que foi perdido.Você quase nunca precisa enviar um
SIGKILL
e deve ter certeza de que esgotou suas alternativas antes de fazê-lo. Em muitos casos, a reinicialização (que acabará enviandoSIGKILL
s para programas que se comportam mal) é mais segura do que enviar manualmente aSIGKILL
si mesmo. Provavelmente posso contar com uma mão o número de vezes que precisei enviar umaSIGKILL
(e provavelmente toda a minha criação).De um modo geral, você pode usar Ctrl+ C(que envia o processo em primeiro plano a
SIGINT
) ouSIGTERM
(como em "encerrar") para instruir um processo a parar o que está fazendo e sair.Algumas leituras adicionais:
kill
sinais-9
significa isso ?kill
sinais diferentesfonte