
Linux ist ein großartiges und fortschrittliches Betriebssystem, aber es ist nicht perfekt. Hin und wieder können einige Anwendungen anfangen, sich unregelmäßig zu verhalten und nicht mehr zu reagieren oder eine Menge Systemressourcen zu verbrauchen. Nicht reagierende Anwendungen können nicht neu gestartet werden, da der ursprüngliche Anwendungsprozess nie vollständig heruntergefahren wird. Die einzige Lösung besteht darin, entweder das System neu zu starten oder den Anwendungsprozess zu beenden.
Es gibt mehrere Dienstprogramme, mit denen Sie fehlerhafte Prozesse mit kill
beenden können das wird am häufigsten verwendet.
kill
Befehl #
kill
ist eine Shell, die in die meisten von Bourne abgeleiteten Shells wie Bash und Zsh integriert ist. Das Befehlsverhalten unterscheidet sich geringfügig zwischen den Shells und dem eigenständigen /bin/kill
ausführbar.
Verwenden Sie den type
Befehl, um alle Orte auf Ihrem System anzuzeigen, die kill
enthalten :
type -a kill
kill is a shell builtin
kill is /bin/kill
Die obige Ausgabe sagt, dass die eingebaute Shell Vorrang vor der eigenständigen ausführbaren Datei hat und immer dann verwendet wird, wenn Sie kill
eingeben . Wenn Sie die Binärdatei verwenden möchten, geben Sie den vollständigen Pfad zur Datei /bin/kill
ein . In diesem Artikel verwenden wir das Bash-Built.
Die Syntax des kill
Der Befehl hat folgende Form:
kill [OPTIONS] [PID]...
Der kill
Der Befehl sendet ein Signal an bestimmte Prozesse oder Prozessgruppen und veranlasst sie, entsprechend dem Signal zu handeln. Wenn das Signal nicht angegeben ist, ist es standardmäßig -15
(-TERM).
Die am häufigsten verwendeten Signale sind:
1
(HUP
) - Laden Sie einen Prozess neu.9
(KILL
) - Einen Prozess beenden.15
(TERM
) - Stoppen Sie einen Prozess ordnungsgemäß.
Um eine Liste aller verfügbaren Signale zu erhalten, rufen Sie den Befehl mit -l
auf Möglichkeit:
kill -l

Signale können auf drei verschiedene Arten angegeben werden:
- Mit Nummer (z. B.
-1
oder-s 1
). - Mit dem Präfix „SIG“ (z. B.
-SIGHUP
oder-s SIGHUP
). - Ohne das Präfix „SIG“ (z. B.
-HUP
oder-s HUP
).
Die folgenden Befehle sind einander gleichwertig:
kill -1 PID_NUMBER
kill -SIGHUP PID_NUMBER
kill -HUP PID_NUMBER
Die für kill
bereitgestellten PIDs Befehl kann einer der folgenden sein:
- Wenn
PID
größer als Null ist, wird das Signal mit der ID gleichPID
an den Prozess gesendet . - Wenn
PID
gleich Null ist, wird das Signal an alle Prozesse in der aktuellen Prozessgruppe gesendet. Mit anderen Worten, das Signal wird an alle Prozesse gesendet, die zur GID der Shell gehören, die denkill
aufgerufen hat Befehl. Verwenden Sieps -efj
Befehl zum Anzeigen der Prozessgruppen-IDs (GIDs). - Wenn
PID
ist gleich-1
, wird das Signal an alle Prozesse mit derselben UID wie der Benutzer gesendet, der den Befehl aufruft. Wenn der aufrufende Benutzer root ist, wird das Signal an alle Prozesse außer init undkill
gesendet selbst verarbeiten. - Wenn
PID
ist kleiner als-1
, wird das Signal an alle Prozesse in der Prozessgruppe eq gesendet, wobei GID gleich dem absoluten Wert vonPID
ist .
Normale Benutzer können Signale an ihre eigenen Prozesse senden, aber nicht an die, die anderen Benutzern gehören, während der Root-Benutzer Signale an die Prozesse anderer Benutzer senden kann.
Beenden von Prozessen mit kill
Befehl #
Beenden oder beenden Sie einen Prozess mit kill
Befehl, müssen Sie zuerst die Prozess-ID-Nummer (PID) finden. Sie können dies mit verschiedenen Befehlen wie top
tun , ps
, pidof
und pgrep
.
Nehmen wir an, der Firefox-Browser reagiert nicht mehr und Sie müssen den Firefox-Prozess beenden. Um die Browser-PIDs zu finden, verwenden Sie den pidof
Befehl:
pidof firefox
Der Befehl gibt die IDs aller Firefox-Prozesse aus:
6263 6199 6142 6076
Sobald Sie die Prozessnummern kennen, können Sie sie alle beenden, indem Sie den TERM
senden Signal:
kill -9 6263 6199 6142 6076
Anstatt nach PIDs zu suchen und dann die Prozesse zu beenden, können Sie die obigen Befehle zu einem kombinieren:
kill -9 $(pidof firefox)
Neuladen von Prozessen mit kill
Befehl #
Ein weiterer häufiger Anwendungsfall für kill
ist das Senden des HUP
Signal, das den Prozessen mitteilt, ihre Einstellungen neu zu laden.
Um beispielsweise Nginx neu zu laden, müssen Sie ein Signal an den Master-Prozess senden. Die Prozess-ID des Nginx-Master-Prozesses finden Sie in der nginx.pid
Datei, die sich normalerweise im Verzeichnis /var/run
befindet Verzeichnis.
Verwenden Sie die cat
Befehl, um die Master-PID zu finden:
cat /var/run/nginx.pid
30251
Sobald Sie die Master-PID gefunden haben, laden Sie die Nginx-Einstellungen neu, indem Sie Folgendes eingeben:
sudo kill -1 30251
Der obige Befehl muss als root oder Benutzer mit sudo-Privilegien ausgeführt werden.
Schlussfolgerung #
Der kill
Befehl wird verwendet, um ein Signal an Prozesse zu senden. Das am häufigsten verwendete Signal ist SIGKILL
oder -9
, wodurch die angegebenen Prozesse beendet werden.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.