Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

kill - Signale an Prozesse senden

&pagelevel(4)&pagelevel

(terminate or signal processes)


Das Kommando kill sendet ein Signal an eine durch die Prozessnummer (PID) bestimmte Menge von Prozessen. Um die Prozessnummer des Prozesses zu erfahren, an den Sie ein Signal senden wollen, verwenden Sie das Kommando ps.


Syntax


Format 1:kill[ -signal] prozessnummer ...
Format 2:kill -s signal prozessnummer ...
Format 3:kill -signal -gruppennummer ...
Format 4:kill -l [exit-status]



Signale an Prozesse senden
Format 1:kill[ -signal] prozessnummer ...


-signal

Signal, das an die Prozesse gesendet werden soll. Sie können dieses Signal in Form einer Zahl oder als symbolischen Namen angeben. Ein symbolischer Name ist die Bezeichnung eines Signals entsprechend der Definition in der Include-Datei <sys/signal.h>; das Präfix SIG wird allerdings nicht angegeben. Die Liste dieser Namen können Sie sich mit der Option -l ausgeben lassen.

Alle in der Include-Datei <sys/signal.h> definierten Signale können angegeben werden. Die Signale mit folgenden Nummern und symbolischen Namen sind auf Kommando-Ebene von Bedeutung:

1 - SIGHUP:

Verbindung zu Datensichtstation unterbrechen (hangup)

2 - SIGINT:

unterbrechen durch CTRL+C (interrupt)

3 - SIGQUIT:

abbrechen (quit)

9 - SIGKILL:

unbedingter Prozessabbruch (kill)

15 - SIGTERM:

Programmbeendigung (software termination)

Zusätzlich wird der symbolische Name 0 erkannt, der den Signalwert Null darstellt.

signal nicht angegeben:
kill sendet das Signal SIGTERM (15) an die angegebenen Prozesse. Dadurch werden Prozesse, die dieses Signal nicht abfangen oder ignorieren, in der Regel abgebrochen.

prozessnummer

Nummer des Prozesses, an den Sie ein Signal senden wollen. Benutzer können nur an eigene Prozesse Signale senden. Der POSIX-Verwalter kann Signale an alle Prozesse senden.

Die aktuellen Prozessnummern gibt das Kommando ps aus.

0 als Prozessnummer bedeutet: Das angegebene Signal wird an alle Prozesse aus Ihrer Prozessgruppe gesendet.

Signale an Prozesse senden
Format 2:kill -s signal prozessnummer ...


-s signal

Signal, das an die Prozesse gesendet werden soll. Sie können dieses Signal in Form einer Zahl oder als symbolischen Namen angeben. Ein symbolischer Name ist die Bezeichnung eines Signals entsprechend der Definition in der Include-Datei <sys/signal.h>; das Präfix SIG wird allerdings nicht angegeben. Die Liste dieser Namen können Sie sich mit der Option -l ausgeben lassen.

Signale an Prozessgruppen senden
Format 3:kill -signal -gruppennummer ...


-signal

Signal, das an die Prozesse einer Prozessgruppe gesendet werden soll. Sie können dieses Signal in Form einer Zahl oder als symbolischen Namen angeben. Ein symbolischer Name ist die Bezeichnung eines Signals entsprechend der Definition in der Include-Datei <sys/signal.h>; das Präfix SIG wird allerdings nicht angegeben. Die Liste dieser Namen können Sie sich mit der Option -l ausgeben lassen.

-gruppennummer

kill sendet das Signal an alle Prozesse der Prozessgruppe gruppennummer.

Benutzer können nur an eigene Prozessgruppen Signale senden.

Der POSIX-Verwalter kann Signale an alle Prozessgruppen senden.

Wenn Sie für gruppennummer die Zahl 1 angeben, so wird signal an alle Prozesse gesendet, deren realer User gleich dem effektiven User des kill-Kommandos ist. Als privilegierter Benutzer senden Sie das Signal an alle Prozesse, mit Ausnahme bestimmter Systemprozesse.

Symbolische Signalnamen auflisten
Format 4:kill -l [exit-status]


-l

kill listet die symbolischen Signalnamen auf.

exit-status

Signalnummer oder Endestatus des Prozesses, der durch ein Signal beendet wird.

Fehler

no such process

Sie haben für prozessnummer einen ungültigen Wert angegeben.


no such process group

Sie haben für gruppennummer einen ungültigen Wert angegeben.

Datei

<sys/signal.h>

Include-Datei, in der die symbolischen Namen der Signale definiert sind.

Internationale Umgebung

Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos kill:

LANG

Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden.

LC_ALL

Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen.

LC_CTYPE

Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten und Eingabedateien) sowie die Einteilung der Zeichen in Groß- und Kleinbuchstaben und deren Übereinstimmung.

LC_MESSAGES

Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden.

NLSPATH

Legt den Pfad der Meldungsdateien für LC_MESSAGES fest.

Beispiel 1

Der Prozess mit der Nummer 312 wird durch das Signal SIGKILL (9) beendet:

$ kill -9 312

Beispiel 2

Das folgende Beispiel gibt den Status eines beendeten Auftrags aus:

job
stat=$?
if [ $stat -eq 0 ]
then
      echo job completed successfully.
elif [ $stat -gt 128 ]
then
      echo job terminated by signal SIG$(kill -l $stat).
else
      echo job terminated with error code $stat.
fi

Um zu vermeiden, dass bei einem Anfangsargument mit einer negativen Zahl entweder eine Signalnummer oder eine Prozessgruppe angegeben werden kann und dadurch Zweideutigkeiten entstehen, schreibt ISO POSIX-2 DIS vor, dass immer ersteres angenommen wird. Wenn also das Standardsignal an eine Prozessgruppe gesendet werden soll (z.B. 123), muss eine Anwendung ein Kommando ähnlich dem folgenden verwenden:

kill -TERM -123

kill -- -123

Siehe auch

ps, trap

kill(), signal() [4]