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).