Kill (Unix)kill (engl. töten) ist ein Unix-Kommando und gleichnamiger Systemaufruf, um unter dem Betriebssystem laufenden Prozessen Signale zu schicken. Standardmäßig wird bei dem UNIX-Kommando kill das Signal SIGTERM versendet, welches den entsprechenden Prozess dazu auffordert, sich zu beenden. Da das Beenden von Prozessen nur ein Anwendungsfall des Programms FunktionsweiseDer Unix-Befehl kill stellt einen Wrapper um den Betriebssystemaufruf Mit kill können viele verschiedene Signale versendet werden,[1] die am meisten benutzten Signale sind allerdings SIGTERM und SIGKILL. Ohne Angabe von Parametern versendet kill SIGTERM. Die empfangenden Programme können dieses Signal abfangen und vor dem Beenden noch unbedingt notwendige Arbeitsschritte durchführen, z. B. geöffnete Dateien abspeichern. SIGKILL wird verwendet, um einen Prozess, der sich trotz Empfang eines SIGTERM-Signals nicht beendet, zu beenden. SIGKILL kann, wie auch SIGSTOP, vom Programm nicht zur Durchzuführung programmspezifischer Aktionen „abgefangen“ werden. Die zwei Signale SIGKILL und SIGSTOP werden demnach nur vom Kernel „gesehen“ und bieten damit in jedem Fall zuverlässige Wege, einen Prozess zu kontrollieren. Während SIGKILL den Kernel anweist, den Prozess zu „töten“ (zu beenden), pausiert der Kernel den Prozess bei einem SIGSTOP, bis das Signal SIGCONT empfangen wird. Nicht jeder Aufruf von kill dient dazu, einen Prozess zu beenden. So gibt z. B. das Programm dd bei dem Signal SIGUSR1 den aktuellen Verarbeitungsstatus eines Kopiervorgangs auf der Standardfehlerausgabe aus, dies lässt sich mit Bei Unix als klassischem Mehrbenutzersystem hat jeder Prozess einen Inhaber (UID). Jeder Prozess darf nur ein Signal zu einem Prozess, der dem gleichen Inhaber gehört, versenden. Das heißt, dass jeder Benutzer auch nur seine eigenen Prozesse beenden darf. Ausgenommen ist der Superuser, welcher jedem Prozess auf dem System Signale schicken darf. VerwendungDer Syntax des Unix-Befehls lautet
als optionaler Parameter kann das gewünschte Signal angegeben werden, in der Form Um beispielsweise einem fiktiven Prozess mit der ID 4711 das Signal SIGTERM zu schicken, gibt es drei mögliche Aufrufvarianten:
Analog geschieht der Aufruf mit anderen Signalen, z. B. SIGKILL:
Ein Signal kann an alle Prozesse einer Prozessgruppe geschickt werden. Dazu wird die PID des „Gruppenleiters“ mit negativen Vorzeichen genommen (die PGID kann mit dem Programmaufruf
AlternativenTastenkombinationenDie bei Unix üblichen Gerätetreiber verschicken Signale, wenn sie bestimmte Zeichen empfangen haben.
Der Gerätetreiber kann mit dem Programm killallEinige Unix-Derivate, unter anderem Solaris, rufen das Unix-Kommando Auf anderen Unix-Derivaten, u. a. IRIX, Linux und FreeBSD, wird das Kommando killall hingegen verwendet, um einen Prozess anhand seines Namens zu beenden. Um zum Beispiel XMMS, einen Mediaplayer, der per pkill
Um zum Beispiel die dem Webbrowser Firefox zugehörigen Prozesse zu beenden, ohne sich dabei pkill sowie pgrep zu bedienen, müsste man eine Zeile wie Siehe auch
Einzelnachweise
Weblinks
|