Linux / Befehl kill: Senden Sie ein Signal an eine Prozess-ID

kill sendet ein Signal an die angegebene Prozess-ID (PID) oder Shell-Aufgabe. Entgegen seinem Namen ist seine Standardaktion keine erzwingende Beendigung, sondern eine Beendigungsanforderung über SIGTERM.

In Bash wird kill als integrierter Shell-Befehl bereitgestellt. Wie ein Prozess auf ein empfangenes Signal reagiert, hängt von der Art des Signals und der Implementierung des Programms ab. Wenn eine Beendigung notwendig ist, versuchen Sie zuerst das normale Beendigungsverfahren und SIGTERM.

Grundlegende Syntax

kill [-signal] PID...

Installierte Implementierungen und Optionen können je nach Distribution variieren. Verwenden Sie help kill, um die Beschreibung auf dem aktuellen System zu überprüfen.

Beispiele

Überprüfung der PID

Überprüfen Sie zunächst, ob der Prozess weiterhin die beabsichtigte Aufgabe ist.

ps -p 1234 -o pid,user,stat,cmd

Anforderung einer normalen Beendigung

Senden Sie ausdrücklich das standardmäßige SIGTERM.

kill -TERM 1234

Liste der verfügbaren Signale

Überprüfen Sie die Namen der Signale in der aktuellen Shell-Implementierung.

kill -l

Überprüfen Sie die PID und senden Sie ein Signal

kill sendet ein Signal an eine PID, nicht an einen Namen. Die unten stehende 12345 ist eine Beispielnummer, daher überprüfen Sie beim tatsächlichen Ausführen zuerst die PID Ihres Testprozesses mit ps und ersetzen Sie sie.

ps -p 12345 -o pid,stat,comm
kill -TERM 12345
ps -p 12345 -o pid,stat,comm

Bei der ersten Abfrage wird das Ziel angezeigt, und wenn kill erfolgreich ist, gibt es normalerweise keine Ausgabe. Nach Abschluss einer normalen Beendigung zeigt die letzte Abfrage nur die Kopfzeile an oder weist darauf hin, dass es kein Ziel gibt. Dies ist ein Beispielablauf, und die Zeit, die für die vollständige Beendigung benötigt wird, hängt vom Prozess ab.

SIGTERM ist die Standardanforderung zur Beendigung, die eine Bereinigung ermöglicht. SIGKILL überspringt die Bereinigung, daher sollte es nur als letzter Ausweg verwendet werden. PIDs können wiederverwendet werden, daher könnte das blinde Vertrauen auf eine alte Nummer dazu führen, dass ein Signal an einen anderen Prozess gesendet wird.

Hauptoptionen und Format

Optionen/Format Beschreibung
-TERM Anforderung der normalen Beendigung eines Prozesses.
-INT Senden eines Signals, das einem Terminal-Interrupt entspricht.
-HUP Senden eines Hangup-Signals, das je nach Programm unterschiedlich interpretiert wird.
-KILL Erzwingen Sie eine sofortige Beendigung. Aufräumarbeiten können übersprungen werden.
-0 Überprüfen Sie Existenz und Berechtigungen, ohne ein tatsächliches Beendigungssignal zu senden.

Vorsichtsmaßnahmen bei der Verwendung

Da PIDs wiederverwendet werden können, verwenden Sie keinen PID, der lange aufgezeichnet wurde. Das Scheitern von kill -0 kann sowohl auf das Fehlen des Prozesses als auch auf fehlende Berechtigungen zurückzuführen sein. kill -KILL ist das letzte Mittel und kann die Datenbereinigung oder das Schreiben von Dateien unterbrechen.

Häufig gestellte Fragen

Was ist, wenn Sie kill ausführen, der Prozess aber bestehen bleibt?

Er könnte SIGTERM ignorieren oder sich im Abschaltbereinigungsprozess befinden. Überprüfen Sie den Status und die Protokolle und prüfen Sie zunächst die richtige Methode zum Herunterfahren des Dienstes.

Offizielle Dokumentation

Sie können das genaue Verhalten von Optionen und Implementierungsunterschieden in der offiziellen kill-Dokumentation nachprüfen.