J'hésite toujours beaucoup à lancer kill -9 , mais je vois d'autres administrateurs le faire presque régulièrement.
Je pense qu'il y a probablement un juste milieu, donc :
- Quand et pourquoi faut-il
kill -9être utilisé? Quand et pourquoi pas ? - Que faut-il essayer avant de le faire ?
- Quel type de débogage d'un processus "bloqué" pourrait causer d'autres problèmes ?
Réponse acceptée :
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 SIGTERM et le font souvent .) 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).