Généralement, vous devez utiliser kill
(abréviation de kill -s TERM
, ou sur la plupart des systèmes kill -15
) avant kill -9
(kill -s KILL
) pour donner au processus cible une chance de nettoyer après lui-même. (Les processus ne peuvent pas attraper ou ignorer SIGKILL
, mais ils peuvent attraper et attrapent souvent SIGTERM
.) Si vous ne donnez pas au processus une chance de terminer ce qu'il est en train de faire et de nettoyer, il peut laisser des fichiers corrompus (ou un autre état) qu'il ne pourra pas comprendre une fois redémarré.
strace
/truss
, ltrace
et gdb
sont généralement de bonnes idées pour voir pourquoi un processus bloqué est bloqué. (truss -u
sur Solaris est particulièrement utile; Je trouve ltrace
présente trop souvent des arguments aux appels de bibliothèque dans un format inutilisable.) Solaris a également un /proc
utile , dont certains ont été portés sur Linux. (pstack
est souvent utile).
Randal Schwartz avait l'habitude de publier fréquemment "Utilisation inutile de (x)" sur les listes. Un de ces messages portait sur kill -9
. Il comprend des raisons et une recette à suivre. Voici une version reconstruite (citée ci-dessous).
(Citation abominable)
Non non Non. N'utilisez pas kill -9.
Cela ne donne pas au processus une chance de :
1) fermer les connexions socket
2) nettoyer les fichiers temporaires
3) informer ses enfants qu'il s'en va
4) réinitialiser les caractéristiques de son terminal
et ainsi de suite et ainsi de suite et ainsi de suite.
Généralement, envoyez 15, et attendez une seconde ou deux, et si cela ne fonctionne pas, envoyez 2, et si cela ne fonctionne pas, envoyez 1. Si cela ne fonctionne pas, SUPPRIMEZ LE BINAIRE car le programme se comporte mal !
N'utilisez pas kill -9. Ne sortez pas la moissonneuse-batteuse juste pour ranger le pot de fleurs.
Juste une autre utilisation inutile de Usenet,
(.signature)
Il devrait toujours être acceptable de faire kill -9
, tout comme il devrait toujours être possible de l'éteindre en tirant sur le câble d'alimentation. Cela peut être antisocial et laisser un peu de récupération à faire, mais cela devrait fonctionner et c'est un outil puissant pour les impatients.
Je dis cela en tant que quelqu'un qui essaiera d'abord de tuer simplement (15), car cela donne à un programme une chance de faire un peu de nettoyage - peut-être simplement en écrivant dans un journal "sortie sur sig 15". Mais je n'accepterai aucune plainte pour mauvaise conduite sur un kill -9.
La raison :de nombreux clients le font pour des choses que les programmeurs préféreraient ne pas faire. Le test Random kill -9 est un scénario de test bon et équitable, et si votre système ne le gère pas, votre système est en panne.