GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kill-Befehl unter Linux

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:

  1. Mit Nummer (z. B. -1 oder -s 1 ).
  2. Mit dem Präfix „SIG“ (z. B. -SIGHUP oder -s SIGHUP ).
  3. Ohne das Präfix „SIG“ (z. B. -HUP oder -s HUP ).

Die folgenden Befehle sind einander gleichwertig:

kill -1 PID_NUMBERkill -SIGHUP PID_NUMBERkill -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 gleich PID 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 den kill aufgerufen hat Befehl. Verwenden Sie ps -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 und kill 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 von PID 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.


Linux
  1. Linux-mv-Befehl

  2. Linux-Du-Befehl

  3. Wie beendet man einen Prozess unter Linux mit dem Befehl?

  4. nohup-Befehlsoptionen in Linux

  5. Beenden Sie einen Java-Prozess (in Linux) anhand des Prozessnamens anstelle der PID

Pstree-Befehl unter Linux

W-Befehl unter Linux

Bei Befehl unter Linux

5 schnelle Möglichkeiten, einen Prozess in Linux zu beenden

Wie man einen Prozess unter Linux beendet

Was ist der Kill-Befehl in Linux?