Es gibt eine Reihe von Signalen, deren Standardeinstellung darin besteht, den Prozess zu beenden. Das ultimative Beendigungssignal ist SIGKILL, da es nicht verarbeitet werden kann und der Prozess keine andere Wahl hat, als zu sterben. Dies bedeutet jedoch auch, dass der Prozess, wenn Sie ihn senden, keine Gelegenheit mehr hat, aufzuräumen. Gute Manieren erfordern daher das Senden eines Signals wie SIGTERM, das zuerst verarbeitet werden kann, und nur dann, wenn der Prozess nach einiger Zeit nicht beendet wird. Senden Sie es SIGKILL.
Beachten Sie, dass SIGINT und SIGQUIT keine guten Kandidaten für eine willkürliche Prozessbeendigung sind. Aufgrund der Tatsache, dass sie über die Tastatur des Terminals generiert werden können, werden sie von vielen Anwendungen für spezielle Zwecke verwendet. Beispielsweise generiert der Python-Interpreter mithilfe von SIGINT eine KeyboardInterrupt
Ausnahme (auch in interaktiven Python-Sitzungen, in denen einfach zur Eingabeaufforderung zurückgekehrt wird), und JVM verwendet SIGQUIT, um Stack-Traces zu sichern. SIGINT und SIGQUIT bleiben für die meisten Standard-Befehlszeilendienstprogramme wie find
oder wirksam cat
.
Während des Herunterfahrens des Systems senden die meisten UNIX- und Linux-Systeme SIGTERM an alle Prozesse, gefolgt von einer Wartezeit von 5 Sekunden, gefolgt von SIGKILL. Dies ist die empfohlene Methode, um einen beliebigen Prozess sicher herunterzufahren.
Beachten Sie außerdem, dass auch SIGKILL einen Prozess möglicherweise nicht beenden kann, der in einer unterbrechungsfreien Wartezeit steckt, bis der Prozess aufwacht.
SIGKILL
.