Ich zögere immer sehr, kill -9
auszuführen , aber ich sehe, dass andere Administratoren dies fast routinemäßig tun.
Ich denke, es gibt wahrscheinlich einen vernünftigen Mittelweg, also:
- Wann und warum sollte
kill -9
verwendet werden? Wann und warum nicht? - Was sollte vorher versucht werden?
- Welche Art des Debuggens eines hängengebliebenen Prozesses könnte weitere Probleme verursachen?
Akzeptierte Antwort:
Im Allgemeinen sollten Sie kill
verwenden (kurz für kill -s TERM
, oder auf den meisten Systemen kill -15
) vor kill -9
(kill -s KILL
), um dem Zielprozess die Möglichkeit zu geben, nach sich selbst aufzuräumen. (Prozesse können SIGKILL
nicht abfangen oder ignorieren , aber sie können SIGTERM
abfangen und tun dies auch oft .) Wenn Sie dem Prozess keine Chance geben, seine Arbeit zu beenden und zu bereinigen, hinterlässt er möglicherweise beschädigte Dateien (oder andere Zustände), die er nach dem Neustart nicht mehr verstehen kann.
strace
/truss
, ltrace
und gdb
sind im Allgemeinen gute Ideen, um zu untersuchen, warum ein festgefahrener Prozess feststeckt. (truss -u
auf Solaris ist besonders hilfreich; Ich finde ltrace
präsentiert Argumente für Bibliotheksaufrufe zu oft in einem unbrauchbaren Format.) Solaris hat auch nützliches /proc
-basierte Tools, von denen einige auf Linux portiert wurden. (pstack
ist oft hilfreich).