GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wann sollte ich einen Prozess nicht beenden -9?

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.


Linux
  1. Warum wird Sigint nicht an den untergeordneten Prozess weitergegeben, wenn er an den übergeordneten Prozess gesendet wird?

  2. kill-Befehlsbeispiele in Linux

  3. kill:Befehl nicht gefunden

  4. So beenden Sie den Zombie-Prozess

  5. Was tun, wenn Strg + C einen Prozess nicht beenden kann?

So beenden Sie einen Prozess in Linux

Kill-Befehl unter Linux

So beenden Sie Zombie-Prozesse in Linux

5 schnelle Möglichkeiten, einen Prozess in Linux zu beenden

Wie man einen Prozess unter Linux beendet

Ist es möglich, einen bestimmten Exit-Code zu erzwingen, wenn kill verwendet wird, um einen Prozess zu stoppen?