Como matar processo teimoso

5

Eu tenho um processo irritante que não morre:

ps -A | grep "nzbget" 

me dá:

11394 pts/3    00:00:00 nzbget

Se eu tentar:

pkill nzbget (or 11394)

... eu não obtenho resposta e o processo ainda está vivo, top me dá:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
11394 asystem+  20   0  125448   6244   4984 T   0.0  0.1   0:00.00 nzbget

Eu rodei o nzbget com 'nzbget -s', se eu fizer isso depois que ele estiver rodando (e eu tentei pará-lo), eu recebo um erro [binding socket failed] e tudo que eu posso fazer é reinicializar.

Como posso matar isso sem reiniciar?

    
por aSystemOverload 22.12.2014 / 23:24

5 respostas

5

Você pode usar kill -9 11394 para eliminar completamente o processo, isso invocará o seguinte:

De Os 3 mais importantes "matam" sinais na linha de comando do Linux / UNIX :

The kernel will let go of the process without informing the process of it. An unclean kill like this could result in data loss. This is the "hardest", "roughest" and most unsafe kill signal available, and should only be used to stop something that seems unstoppable.

    
por 22.12.2014 / 23:27
8

Conforme o processo é interrompido * (observe o T como a saída de estado em top ), ele não consegue fazer nenhum tratamento de sinal. Então, você precisa usar um sinal que não requer interação de processo, no seu caso SIGKILL (9) como no seguinte

kill -9 11394

Se você quiser, por qualquer motivo, obter um dump principal do processo (e seu sistema está configurado para isso), você pode usar SIGSEGV (11). Isso não requer nenhuma interação de processo.

* Suponho que parei aqui, porque um processo rastreado deve ser capaz de manipular sinais, o que pode levar a que o processo seja interrompido.

    
por 22.12.2014 / 23:40
1

Existem vários sinais que você pode tentar, o que eu tenho certeza que alguém irá listar, mas o que eu acho mais efetivo é o HUP signal:

kill -hup 11394

Acho que isso funciona em muitos casos em que o aplicativo não está respondendo a nenhum outro sinal. Caso contrário, você pode fazer apenas kill -9 , embora isso possa ter efeitos colaterais, uma vez que apenas obtém o plugue e não permite que o aplicativo seja limpo.

    
por 22.12.2014 / 23:29
1

Tente usar o sinalizador para matar o processo com clareza:

kill -15 11394

    
por 22.12.2014 / 23:26
1

No caso de um aplicativo X, tive sorte ao usar o xkill e clicar em sua janela quando o aplicativo não respondia a um kill na linha de comando

    
por 23.12.2014 / 03:21

Tags