Qual é a diferença entre usar o Monitor do Sistema e o Terminal para eliminar um processo?

4

Quando encerro meu minecraft, ele nunca fecha completamente, procurei uma solução, mas não encontrei nenhuma. Depois de algum tempo desisti e decidi que iria matá-lo manualmente quando quisesse fechá-lo.

Se eu usar pgrep, em seguida, matar no terminal parece não ter nenhum efeito, mas quando eu abro o monitor do sistema e clique direito e matá-lo, ele desliga bem.

Quais são as diferenças entre o modo Monitor do Sistema e o modo Terminal? O System Monitor faz alguma outra coisa em segundo plano que o comando kill não possui?

    
por giodamelio 27.10.2011 / 23:25

3 respostas

5

Não há diferença entre o comando kill e o 'kill' do Monitor do Sistema. O System Monitor apenas fornece alguns argumentos para kill que eu suponho que você não saiba.

Quando você está kill <process-number> , está realmente enviando um sinal para esse processo para sair corretamente. Isso é chamado de SIGTERM. Para matar um processo incondicionalmente, potencialmente causando perda de dados, você precisa enviar um sinal diferente:

kill -9 <process-number>

Isso envia um SIGKILL para o processo, que imediatamente termina sua execução. O Monitor do Sistema usa kill -9 quando você pede para 'matar' um processo, em vez de simplesmente 'fechar' ele.

Esta resposta no SuperUser Stack Exchange deve ser de ajuda .

    
por Jjed 27.10.2011 / 23:37
1

Ao matar um aplicativo usando o terminal, eu acho que você executou:

kill 1234

No Monitor do Sistema , você selecionou o processo e escolheu enviar o KILL para o processo.

Por padrão, o sinal enviado ao processo ao usar kill $pid é TERM . Isso permite que os aplicativos terminem normalmente. No entanto, ao enviar KILL , o programa desaparece imediatamente, sem a possibilidade de desligar corretamente (ou seja, salvar dados). Para enviar um sinal KILL da linha de comando, use:

kill -KILL 1234

(a maneira alternativa de executar este comando é kill -9 1234 , isso é apenas uma questão de preferência)

    
por Lekensteyn 27.10.2011 / 23:36
0

Isso porque, por padrão, o pgrep kill envia um SIGTERM (terminate). Se o aplicativo não estiver em bom estado, um SIGTERM não funcionará. O "processo de kill" no Monitor do sistema envia o comando SIGKILL que literalmente irá matá-lo. São dois sinais diferentes sendo enviados. Se você quiser fazer isso com o pgrep, você usaria o kill -9 , a opção -9 enviará o sinal SIGKILL e será exatamente igual ao que o "Processo de eliminação" do Monitor do Sistema faz.

FYI, o nome do comando kill é um pouco enganador. man kill diz:

  

kill - envia um sinal para um processo

Isso pode ser qualquer sinal. Para ver uma lista de todos os sinais, digite man --sections=7 signal e role para baixo.

Em seguida, diz:

  

O sinal padrão para kill é TERM.

Veja o link para mais informações.

    
por Elijah Lynn 04.01.2016 / 18:28