Sono sempre molto riluttante a eseguire kill -9 , ma vedo che altri amministratori lo fanno quasi di routine.
Immagino che ci sia probabilmente una via di mezzo ragionevole, quindi:
- Quando e perché dovrebbe
kill -9essere usato? Quando e perché no? - Cosa provare prima di farlo?
- Che tipo di debug di un processo "bloccato" potrebbe causare ulteriori problemi?
Risposta accettata:
In genere, dovresti usare kill (abbreviazione di kill -s TERM o sulla maggior parte dei sistemi kill -15 ) prima di kill -9 (kill -s KILL ) per dare al processo di destinazione la possibilità di ripulire se stesso. (I processi non possono catturare o ignorare SIGKILL , ma possono e spesso catturano SIGTERM .) Se non dai al processo la possibilità di completare ciò che sta facendo e ripulire, potrebbe lasciare file danneggiati (o altro stato) in giro che non sarà in grado di capire una volta riavviato.
strace /truss , strace e gdb sono generalmente buone idee per esaminare il motivo per cui un processo bloccato è bloccato. (truss -u su Solaris è particolarmente utile; Trovo ltrace troppo spesso presenta argomenti alle chiamate della libreria in un formato inutilizzabile.) Solaris ha anche un utile /proc basati su strumenti, alcuni dei quali sono stati portati su Linux. (pstack è spesso utile).