kill: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Michi (Diskussion | Beiträge) |
||
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