kill: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 80: Zeile 80:
{{cat|Prozess}}
{{cat|Prozess}}
{{cat|Shell-Befehl}}
{{cat|Shell-Befehl}}
{{cat|UNFERTIG}}

Version vom 28. Januar 2009, 21:19 Uhr

Der Shell-Befehl kill 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 PID 1701 zu töten.

$ kill -TERM 1701
oder
$ kill -15 1701

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

$ kill -15 PID PID
$ kill -9 PID

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

$ kill -9 PID PID

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

Vorlage:dewi