Existe alguma diferença entre
kill -9 212121
e
kill 212121
command-line
bash
user784637
fonte
fonte
kill -9
Respostas:
A página de manual do Ubuntu
kill
explica o propósito do-9
switch (reconhecidamente de uma maneira um tanto instável):Aqui está o que outra página de manual diz.
Portanto, o uso do
-9
comutador garante que o processo seja efetivamente eliminado. Mesmo que um processo congelado ou sem resposta possa não responder a umTERM
sinal simples , ele morrerá quando for enviado umKILL
sinal.fonte
O comando kill enviará um sinal definido para um processo com uma determinada identidade (PID):
É claro que só podemos matar processos que possuímos, enquanto o root pode matar todos os processos. Veja a Wikipedia para um bom resumo dos sinais de computação.
Os sinais que
kill
podem ser enviados estão listados na página de manual . O sinal pode ser representado por nome ou número. Se nenhum sinal for dado, o sinal padrão 15 resp.TERM
é usado.Todos os três comandos abaixo são, portanto, idênticos:
A diferença entre
SIGTERM
eSIGKILL
é a maneira como um aplicativo pode atuar no sinal:TERM
: um aplicativo poderá terminar, ou seja, executar corretamente uma rotina de desligamento.KILL
: os aplicativos são interrompidos e eliminados imediatamente (o que pode levar à perda de dados ou ao aumento da comunicação para relatar uma falha presumida em alguns casos).fonte
Observe que todos os itens a seguir são sinônimos:
Vale ressaltar que, no mundo do tratamento de sinais, o SIGKILL é um dos poucos únicos tratados pelo sistema operacional e não pelo programa. Ao executar
kill -9
, você não está dizendo para o aplicativo se encerrar, mas para o sistema operacional para parar de executar o programa, não importa o que o programa esteja fazendo.Após o envio do SIGKILL , o programa será interrompido imediatamente. Se alguma chamada do kernel estiver em execução (por exemplo, E / S de arquivo) em nome do programa, essas chamadas poderão ou não continuar até serem concluídas, dependendo da chamada, mas o programa em si não será mais executado. Observe que as tarefas rastreadas ou executadas em um depurador podem se comportar de maneira diferente aqui.
O outro sinal que não pode ser bloqueado é o SIGSTOP, que tem um efeito semelhante, mas congela o programa; você pode enviar o SIGCONT posteriormente para continuar. Esse comportamento é completamente controlado pelo sistema operacional e o programa não recebe nenhuma notificação prévia.
Todos os outros sinais são enviados para o programa; ele pode lidar com eles da maneira que escolher ou, se ignorar o sinal, será seguido um comportamento padrão.
Aqui estão alguns sinais úteis que você pode estar enviando para um processo:
Diz ao programa que o usuário desconectou (por exemplo, a sessão SSH ou a janela do terminal foi fechada).
Geralmente faz um desligamento normal do programa.
Enviado quando você pressiona CTRL+ C
Normalmente significa "pare o que está fazendo" - pode ou não matar o programa
O padrão enviado por
kill
ekillall
.Normalmente termina o programa ... às vezes depois que o programa termina o que está fazendo.
Enviado quando você pressiona CTRL+ Z
Pausa o programa, discutido acima
Informa ao programa que a tubulação foi fechada. Normalmente termina o programa.
Por exemplo
cat /etc/passwd | head -n1
, enviará o SIGPIPE para ocat
processo após a primeira linha ser impressa, causandocat
a finalização antes de terminar o arquivo inteiro.Embora todos esses sinais aconteçam "naturalmente" em sua própria configuração, você pode usá-lo para falsificar uma condição para alcançar o resultado desejado.
Por exemplo, se você deseja encerrar a sessão SSH de alguém, você pode simplesmente interromper o processo, mas, ao fazer isso, impedirá a atualização do arquivo HISTORY, o que pode ser importante por razões de segurança. Mas, em vez disso, se você enviar SIGHUP , o processo assumirá que a conexão morreu e executará sua limpeza padrão.
fonte
SIGQUIT
, onde a ação padrão é despejar o núcleo e finalizar. Isso pode ser usado se um programa está fazendo algo muito errado, você precisa interrompê-lo imediatamente e gostaria de poder depurá-lo mais tarde.kill -9 Significado: O processo será morto pelo kernel; este sinal não pode ser ignorado. 9 significa que o sinal KILL não é alcançável ou ignorável
Usos: SIGKILL singal
Kill Significado: O comando kill sem nenhum sinal passa pelo sinal 15, que finaliza o processo da maneira normal.
Usos: sinal SIGTERM , que pode ser manipulado por programadores
fonte