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á enviando SIGKILL
s para programas que se comportam mal) é mais segura do que enviar manualmente a SIGKILL
si mesmo. Provavelmente posso contar com uma mão o número de vezes que precisei enviar uma SIGKILL
(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
) ou SIGTERM
(como em "encerrar") para instruir um processo a parar o que está fazendo e sair.
Algumas leituras adicionais: