Android

Befehl unter Linux beenden

Abgestürzte Programme beenden unter Linux / Ubuntu

Abgestürzte Programme beenden unter Linux / Ubuntu

Inhaltsverzeichnis:

Anonim

Linux ist ein großartiges und fortschrittliches Betriebssystem, aber es ist nicht perfekt. Von Zeit zu Zeit reagieren einige Anwendungen möglicherweise nicht mehr richtig oder verbrauchen viele Systemressourcen. Nicht reagierende Anwendungen können nicht neu gestartet werden, da der ursprüngliche Anwendungsprozess niemals vollständig beendet wird. Die einzige Lösung besteht darin, entweder das System neu zu starten oder den Anwendungsprozess abzubrechen.

Es gibt verschiedene Dienstprogramme, mit denen Sie fehlerhafte Prozesse beenden können kill indem Sie die am häufigsten verwendeten beenden.

Befehl kill

kill ist eine Shell, die in den meisten von Bourne abgeleiteten Shells wie Bash und Zsh eingebaut ist. Das Befehlsverhalten unterscheidet sich geringfügig zwischen den Shells und der eigenständigen /bin/kill Programmdatei.

Verwenden Sie den Befehl type , um alle Speicherorte auf Ihrem System anzuzeigen, die kill enthalten:

type -a kill

kill is a shell builtin kill is /bin/kill

Die obige Ausgabe besagt, 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 . Wir werden den eingebauten Bash verwenden.

Die Syntax des Befehls kill hat folgende Form:

kill…

Der Befehl kill sendet ein Signal an bestimmte Prozesse oder Prozessgruppen und veranlasst diese, entsprechend dem Signal zu handeln. Wenn das Signal nicht angegeben wird, ist der Standardwert -15 (-TERM).

Die am häufigsten verwendeten Signale sind:

  • 1 ( HUP ) - Laden Sie einen Prozess neu. 9 ( KILL ) - Beende einen Prozess. 15 ( TERM ) - Beenden Sie einen Prozess mit TERM .

Um eine Liste aller verfügbaren Signale zu erhalten, rufen Sie den Befehl mit der Option -l :

kill -l

Signale können auf drei verschiedene Arten angegeben werden:

  1. Verwenden von Zahlen (z. B. -1 oder -s 1 ). Verwenden des Präfixes "SIG" (z. B. -SIGHUP oder -s SIGHUP ). Ohne das Präfix "SIG" (z. B. -HUP oder -s HUP ).

Die folgenden Befehle sind einander äquivalent:

kill -1 PID_NUMBER kill -SIGHUP PID_NUMBER kill -HUP PID_NUMBER

Die PIDs, die dem Befehl kill gestellt werden, können eine der folgenden sein:

  • Wenn die PID größer als Null ist, wird das Signal mit der ID gleich der PID an den Prozess gesendet. Wenn die 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 Befehl kill aufgerufen hat. Verwenden ps -efj Befehl ps -efj , um die Prozessgruppen-IDs (GIDs) anzuzeigen. Wenn PID 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 mit Ausnahme von init und dem kill Prozess selbst gesendet. Wenn die PID kleiner als -1 , wird das Signal an alle Prozesse in der Prozessgruppe eq gesendet, wobei die GID gleich dem absoluten Wert von ist die PID .

Normale Benutzer können Signale an ihre eigenen Prozesse senden, jedoch nicht an diejenigen anderer Benutzer, während der Root-Benutzer Signale an die Prozesse anderer Benutzer senden kann.

Beenden von Prozessen mit dem Befehl kill

Um einen Prozess mit dem Befehl kill zu beenden oder abzubrechen, müssen Sie zunächst die Prozess-ID-Nummer (PID) ermitteln. Sie können dies mit verschiedenen Befehlen wie top , ps , pidof und pgrep pidof .

Angenommen, der Firefox-Browser reagiert nicht mehr und Sie müssen den Firefox-Prozess beenden. Um die Browser-PIDs zu finden, verwenden Sie den Befehl pidof :

pidof firefox

Der Befehl gibt die IDs aller Firefox-Prozesse aus:

6263 6199 6142 6076

Sobald Sie die TERM kennen, können Sie alle beenden, indem Sie das TERM Signal senden:

kill -9 2551 2514 1963 1856 1771

Anstatt nach PIDs zu suchen und die Prozesse dann zu beenden, können Sie die obigen Befehle zu einem kombinieren:

kill -9 $(pidof firefox)

Erneutes Laden von Prozessen mit dem Befehl kill

Ein weiterer häufiger Anwendungsfall für kill ist das Senden des HUP Signals, mit dem die Prozesse HUP werden, die 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 Datei nginx.pid , die sich normalerweise im Verzeichnis /var/run .

Verwenden Sie den Befehl cat , 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-Berechtigungen ausgeführt werden.

Fazit

Der Befehl kill 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.

Terminal töten