kill

Aus Mikiwiki
Version vom 13. Februar 2011, 14:09 Uhr von Michi (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Der Shell-Befehl kill aus dem Paket Procps sendet Signale an laufende Prozesse. Prozesse sollten nur im Notfall abgeschossen werden, zuerst sollte immer "kill -TERM" versucht werden.

Manchmal bleiben Unix-Prozesse "hängen" - entweder hängen dann alle Prozesse eines Benutzers oder nur ein einzelner Prozess, z. B. ein bestimmter Befehl oder eine Prozedur. Hängende Prozesse müssen zuerst gesucht und können dann mit kill abgeschossen werden.

Bei der Arbeit mit einer Terminalemulation reicht es bereits, die Terminalemulationssitzung zu beenden, um die hängenden Prozesse zu beenden.

Optionen

Option Wert Funktion
HUP 1 Hang-up. Dient oft dazu, Serverdienste anzuweisen, ihre Konfiguration neu einzulesen.
INT 2 Interrupt. Anhalten des Programms - der Prozess wird dabei normalerweise getötet, kann sich aber dagegen wehren. Dieses Signal wird normalerweise mit "CTRL+C" erzeugt.
KILL 9 Kill. Prozess zwangsweise beenden bzw. "töten". Dabei wird keine Rücksicht darauf genommen, ob der Prozess noch Daten speichern will.
SIGV 11 Segmentation Fault. Prozess wegen Speicherschutzverletzung zwangsweise beenden.
TERM 15 Terminate. Der Prozess wird normalerweise getötet, kann sich aber dagegen wehren. Es handelt sich um den Signal-Standardwert.
CONT 18 Continue. Prozessausführung fortsetzen.
STOP 19 Stop. Prozessausführung anhalten.
TSTP 20 Terminal. Der Prozess wird angehalten, aber nicht getötet. So angehaltene Prozesse können mit fg oder über das Signal "CONT" fortgesetzt werden. Normalerweise wird das Signal "TSTP" mit "CTRL+Z" erzeugt.

Verwendung

Zum Testen kann z. B. ein Prozess mit "ping localhost" gestartet werden. Danach können alle möglichen Signale an diesem Prozess getestet werden.

Suchen hängender Prozesse

$ whodo <Benutzername>
$ whodo | more
$ ps -ef | more
$ ps -ef | grep <Benutzername>
$ ps -u <Benutzername>
$ ps -ef | grep <Prozessname>

Prozesse abschiessen

Achtung: Um Datenbankinkonsistenzen zu vermeiden sollte niemals ein Informix-oninit-Prozess abgeschossen werden!

Versuch, den Prozess mit der Prozessnummer 1701 zu töten.

$ kill -TERM 1701
oder
$ kill -15 1701

Sanftes Beenden mehrerer Prozesse, immer von der höchsten Prozessnummer zur niedrigsten.

$ kill -15 Prozessnummer Prozessnummer
$ kill -9 Prozessnummer

Töten mehrerer Prozesse, immer von der höchsten Prozessnummer zur niedrigsten.

$ kill -9 Prozessnummer Prozessnummer

Die Befehle killall und pkill können allen Prozessen mit einem bestimmten Namen oder allen Prozessen eines bestimmten Benutzers ein Signal schicken.

Killen mehrerer Java-Prozesse.

# for i in $(ps -ef | grep java | awk '{print $2}'); do kill -9 $i; done
# for i in $(ps -ef | grep z39target | awk '{print $2}'); do kill -15 $i; done

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
Wikipedia ger kill (Unix)wbm Enzyklopädischer Artikel