Comment tuer le process tenace

J'ai un process ennuyeux qui ne mourra pas:

ps -A | grep "nzbget" 

Donne moi:

 11394 pts/3 00:00:00 nzbget 

Si j'essaye:

 pkill nzbget (or 11394) 

… je n'ai pas de réponse et le process est toujours en vie, le top me donne:

 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 

Je lance nzbget avec 'nzbget -s', si je le fais après son exécution (et j'ai essayé de l'arrêter), j'obtiens une erreur [binding socket failed] et tout ce que je peux faire est de redémarrer.

Comment puis-je tuer cela sans redémarrer?

Vous pouvez utiliser kill -9 11394 pour tuer complètement le process, cela va invoquer ce qui suit:

A partir des 3 signaux "kill" les plus importants sur la command line Linux / UNIX :

Le kernel va lâcher le process sans en informer le process. Une destruction impure comme celle-ci pourrait entraîner une perte de données. C'est le signal de destruction le plus "dur", "le plus dur" et le plus dangereux disponible, et ne devrait être utilisé que pour arrêter quelque chose qui semble imparable.

Comme le process est arrêté * (notez le T comme la sortie d'état en top ), il ne peut pas faire de manipulation de signal du tout. Donc, vous devez utiliser un signal qui ne nécessite pas d'interaction de process, dans votre cas SIGKILL (9) comme dans la suite

 kill -9 11394 

Si vous voulez, pour une raison quelconque, get un vidage de base du process (et votre système est configuré pour cela), vous pouvez utiliser SIGSEGV (11) à la place. Cela ne nécessite aucune interaction de process non plus.

* Je suppose que nous nous sums arrêtés ici, car un process tracé devrait pouvoir gérer les signaux, ce qui peut entraîner l'arrêt du process.

Il y a plusieurs signaux que vous pouvez essayer, que je suis sûr que quelqu'un d'autre va listr, mais celui que je trouve le plus efficace est le signal HUP :

 kill -hup 11394 

Je trouve cela fonctionne dans beaucoup de cas où l'application ne répond pas à d'autres signaux. A défaut, vous pouvez simplement kill -9 , même si cela peut avoir des effets secondaires car il suffit de tirer sur la prise et ne laisse pas l'application nettoyer.

Essayez d'utiliser le drapeau de signal pour tuer le process avec élégance:

kill -15 11394

Dans le cas d'une application X, j'ai eu de la chance en utilisant xkill et en cliquant sur sa window lorsque l'application ne répondait pas à un kill de la command line