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
fangen 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
zu oft präsentiert Argumente für Bibliotheksaufrufe in einem unbrauchbaren Format.) Solaris hat auch nützliche /proc
-basierte Tools, von denen einige auf Linux portiert wurden. (pstack
ist oft hilfreich).
Randal Schwartz hat früher häufig „Useless use of (x)“ auf Listen gepostet. Ein solcher Beitrag handelte von kill -9
. Es enthält Gründe und ein Rezept, dem man folgen sollte. Hier ist eine rekonstruierte Version (unten zitiert).
(Abscheulichkeit zitieren)
Nein nein Nein. Verwenden Sie nicht kill -9.
Es gibt dem Prozess keine Chance, sauber:
1) Socket-Verbindungen beenden
2) temporäre Dateien bereinigen
3) seinen Kindern mitteilen, dass es weggeht
4) seine Terminaleigenschaften zurücksetzen
und so weiter und so weiter und so weiter.
Senden Sie im Allgemeinen 15 und warten Sie ein oder zwei Sekunden, und wenn das nicht funktioniert, senden Sie 2, und wenn das nicht funktioniert, senden Sie 1. Wenn dies nicht der Fall ist, ENTFERNEN SIE DIE BINÄRE, da sich das Programm schlecht benommen hat!
Verwenden Sie nicht kill -9. Holen Sie den Mähdrescher nicht heraus, nur um den Blumentopf aufzuräumen.
Nur eine weitere nutzlose Nutzung des Usenet,
(.signatur)
kill -9
sollte immer in Ordnung sein , genauso wie es immer in Ordnung sein sollte, durch Ziehen des Netzkabels herunterzufahren. Es mag unsozial sein und einige Genesungsarbeiten erfordern, aber es sollte funktionieren und ist ein Machtinstrument für Ungeduldige.
Ich sage dies als jemand, der es zuerst mit einfachem Töten (15) versuchen wird, weil es einem Programm die Möglichkeit gibt, etwas aufzuräumen - vielleicht einfach in ein Protokoll zu schreiben "Beenden bei Sig 15". Aber ich akzeptiere keine Beschwerde über schlechtes Benehmen bei einem Kill -9.
Der Grund:Viele Kunden tun es mit Dingen, die Programmierer lieber tun würden als nicht. Random kill -9 Testing ist ein gutes und faires Testszenario, und wenn Ihr System damit nicht umgehen kann, ist Ihr System kaputt.