Einführung
Wenn ein Linux-Prozess nicht mehr reagiert oder zu viele Ressourcen verbraucht, müssen Sie ihn möglicherweise beenden.
Die meisten Prozesse haben ihre eigenen Methoden zum Herunterfahren. Leider können Prozesse gestört sein und sich nicht herunterfahren lassen. Wenn ein laufender Hintergrundprozess nicht reagiert, muss ein Befehl verwendet werden, um ihn zu beenden.
Hier ist eine vollständige Anleitung zum Beenden eines Linux-Prozesses über die Befehlszeile.
Welche Prozesse können Sie unter Linux beenden?
Bevor Sie einen Prozess beenden oder beenden, müssen Sie die Berechtigungen berücksichtigen.
Ein Root-Benutzer kann alle Prozesse beenden. Sie können entweder sudo
hinzufügen vor einem Befehl, um es als root auszuführen, oder erhalten Sie eine root-Shell mit su
. Führen Sie dann den Befehl aus.
Das Beenden eines Prozesses sendet eine Beendigungsnachricht an den angegebenen Prozess. Es gibt mehrere Arten von Beendigungsnachrichten, darunter:
SIGKILL
– SIGKILL ist die ultimative Art, einen Prozess zu beenden. Es wird einen Prozess immer beenden und den Prozess abrupt beenden, wodurch ein schwerwiegender Fehler erzeugt wird. SIGKILL sollte immer funktionieren. Wenn es nicht funktioniert, ist das Betriebssystem ausgefallen.SIGTERM
– SIGTERM versucht, einen Prozess zu beenden, aber im Gegensatz zu SIGKILL kann es blockiert oder anderweitig behandelt werden. Es kann als eine sanftere Methode angesehen werden, um zu versuchen, einen Prozess zu beenden.
Für die meisten Zwecke SIGKILL
ist die schnellste und effektivste Methode, um den Prozess zu beenden.
Schritt 1:Laufende Linux-Prozesse anzeigen
Die top
Befehl ist der einfachste Weg, um sich einen vollständigen Überblick über die derzeit ausgeführten Prozesse zu verschaffen.
Um eine Liste aller derzeit laufenden Prozesse anzuzeigen, verwenden Sie den Befehl:
top
Der oberste Befehl zeigt Prozess-IDs und Benutzer sowie die Menge an Speicher und CPU-Leistung, die jeder Prozess verwendet.
Um Prozesse direkt von oben zu beenden Benutzeroberfläche, drücken Sie k und geben Sie die Prozess-ID ein.
Um die Spitze zu verlassen Benutzeroberfläche, drücken Sie q .
Schritt 2:Finden Sie den Prozess, der beendet werden soll
Bevor Sie einen Prozess beenden können, müssen Sie ihn finden. Es gibt mehrere Möglichkeiten, wie Sie in Linux nach einem Prozess suchen können. Prozesse können entweder anhand eines Prozessnamens (oder eines Teils eines Prozessnamens) oder einer Prozess-ID (auch bekannt als „PID“) lokalisiert werden.
Suchen Sie einen Prozess mit dem ps-Befehl
Das ps
Der Befehl zeigt ähnliche Informationen wie top
an , allerdings nicht in Form einer Schnittstelle. Stattdessen wird ps
Der Befehl bietet eine vollständige Liste der laufenden Prozesse, formatiert basierend auf den von Ihnen hinzugefügten Tags.
ps <options>
Die am häufigsten hinzugefügten Optionen sind „-aux“:
-a
. Zeigen Sie Prozesse aller Benutzer an, anstatt nur des aktuellen Benutzers.-u
. Stellen Sie detaillierte Informationen zu jedem der Prozesse bereit-x
. Fügen Sie Prozesse hinzu, die nicht von Benutzern, sondern von Daemons gesteuert werden.
Beispielsweise der Befehl ps -aux
gibt eine detaillierte Prozessliste aller Prozesse zurück.
Die PID mit pgrep oder pidof finden
Der Linux-Befehl pgrep
ist eine komplexere Art, einen Prozess zu finden. Dieser Befehl gibt Prozesse basierend auf bestimmten Auswahlkriterien zurück, die als Muster bekannt sind. Das Muster ist ein regulärer Ausdruck, z. B. a*
, wobei * wäre ein Platzhalter.
pgrep <options> <pattern>
Hier sind die Optionen, die mit diesem Befehl verwendet werden können:
-l
. Listen Sie sowohl die Prozessnamen als auch die PIDs auf.-n
. Gibt den neuesten Prozess zurück.-o
. Gibt den ältesten Prozess zurück.-u
. Nur Prozesse finden, die einem bestimmten Benutzer gehören.-x
. Finde nur Prozesse, die genau dem vorgegebenen Muster entsprechen.
Der Befehl pgrep -u root
zeigt alle Prozesse an, die Root gehören. Der Befehl pgrep -u root 'a*'
gibt Prozesse zurück, die root gehören und mit dem Buchstaben „a“ beginnen.
Die pidof
Der Befehl wird verwendet, um die ID eines Prozesses zu finden, vorausgesetzt, Sie kennen den Namen des Prozesses.
pidof <options> <program>
Einige Optionen können eingeschlossen werden, wie zum Beispiel:
-c
. Geben Sie nur PIDs innerhalb eines einzelnen Stammverzeichnisses zurück.-o
. Bestimmte PIDs auslassen (einschließlich der auszulassenden Prozesse nach dem Flag).-s
. Gibt nur eine einzelne PID zurück.-x
. Gibt auch PIDs von Shells zurück, die Skripte ausführen.
Schritt 3:Verwenden Sie Kill-Befehlsoptionen, um einen Prozess zu beenden
Es gibt ein paar verschiedene Methoden, um einen Prozess unter Linux zu beenden, je nachdem, ob Sie den Namen des laufenden Prozesses kennen, die PID des Prozesses oder nur, wie lange der Prozess schon läuft.
killall-Befehl
Der killall
Befehl wird verwendet, um Prozesse nach Namen zu beenden. Standardmäßig sendet es ein SIGTERM-Signal. Der killall
Befehl kann mehrere Prozesse mit einem einzigen Befehl beenden.
killall <process>
Mehrere Optionen können mit killall
verwendet werden Befehl:
-e
. Finden Sie eine genaue Übereinstimmung für den Prozessnamen.-I
. Groß-/Kleinschreibung ignorieren, wenn versucht wird, den Prozessnamen zu finden.-i
. Fordern Sie eine zusätzliche Bestätigung an, wenn Sie den Prozess beenden.-u
. Beenden Sie nur Prozesse, die einem bestimmten Benutzer gehören.-v
. Melden Sie zurück, ob der Prozess erfolgreich beendet wurde.
Zusätzlich zum Töten von Prozessen basierend auf dem Namen, der killall
Der Befehl kann auch zum Beenden basierend auf dem Alter des Prozesses verwendet werden, indem die folgenden Befehle verwendet werden:
-o
. Verwenden Sie dieses Flag mit einer Dauer, um alle Prozesse zu beenden, die länger als diese Zeit ausgeführt wurden.-y
. Verwenden Sie dieses Flag mit einer Dauer, um alle Prozesse zu beenden, die weniger als diese Zeit ausgeführt wurden.
Der killall -o 15m
Der Befehl beendet alle Prozesse, die älter als 15 Minuten sind, während der Befehl killall -y 15m
Der Befehl beendet alle Prozesse, die weniger als 15 Minuten dauern.
pkill-Befehl
Das pkill
Der Befehl ähnelt dem pgrep
Befehl, indem er einen Prozess basierend auf dem Prozessnamen beendet, zusätzlich zu anderen qualifizierenden Faktoren. Standardmäßig pkill
sendet das SIGTERM-Signal.
pkill <options> <pattern>
Zu den pkill-Optionen gehören:
-n
. Beenden Sie nur die neusten entdeckten Prozesse.-o
. Beenden Sie nur den ältesten der erkannten Prozesse.-u
. Beenden Sie nur die Prozesse, die dem ausgewählten Benutzer gehören.-x
. Beenden Sie nur die Prozesse, die genau dem Muster entsprechen.-signal
. Senden Sie statt SIGTERM ein spezifisches Signal an den Prozess.
Befehl töten
Wenn Sie eine Prozess-ID kennen, können Sie sie mit dem Befehl beenden:
kill <processID>
Der kill
Der Befehl beendet jeweils einen einzelnen Prozess mit der angegebenen Prozess-ID. Es wird ein SIGTERM gesendet Signal, das anzeigt, dass ein Prozess gestoppt werden soll. Es wartet darauf, dass das Programm seine Shutdown-Routine ausführt.
Das -signal
-Befehl kann verwendet werden, um ein Signal anzugeben, das nicht SIGTERM.
Kill -9 Linux-Befehl
kill -9
ist ein nützlicher Befehl, wenn Sie einen nicht reagierenden Dienst herunterfahren müssen. Führen Sie es ähnlich wie einen normalen kill
aus Befehl:
kill -9 <processID>
Oder
kill -SIGKILL <processID>
Die kill -9
Befehl sendet ein SIGKILL Signal, das einem Dienst anzeigt, sofort heruntergefahren zu werden. Ein nicht reagierendes Programm ignoriert einen kill
Befehl, aber es wird heruntergefahren, wenn ein kill -9
Befehl ausgegeben wird. Verwenden Sie diesen Befehl mit Vorsicht. Es umgeht die Standardroutine zum Herunterfahren, sodass alle nicht gespeicherten Daten verloren gehen.
Ihr Betriebssystem läuft nicht richtig, wenn ein SIGKILL-Signal einen Dienst nicht herunterfährt.
oberster Befehl
Die top
Der Befehl stellt eine Schnittstelle bereit, über die ein Benutzer durch aktuell laufende Prozesse navigieren kann.
top
Um einen bestimmten Prozess zu beenden, fügen Sie k
ein von der oberen Oberfläche und geben Sie dann die gewünschte Prozess-ID ein.
xkill-Befehl
Der xkill
Befehl ist ein spezieller Befehlstyp, der die Verbindung eines bestimmten Servers zu Clients schließt.
xkill <resource>
Wenn ein Server eine Reihe unerwünschter Prozesse geöffnet hat, wird xkill
bricht diese Prozesse ab.
Wenn xkill
ohne Angabe einer Ressource ausgeführt wird, öffnet sich eine Schnittstelle, über die der Benutzer ein Fenster zum Schließen auswählen kann.
Wichtige Erkenntnisse zum Beenden eines Linux-Prozesses
- Wenn ein Prozess nicht auf andere Weise geschlossen werden kann, kann er manuell über die Befehlszeile beendet werden.
- Um einen Prozess unter Linux zu beenden, müssen Sie zuerst den Prozess finden. Sie können den
top
verwenden ,ps
,pidof
oderpgrep
Befehle. - Sobald Sie den Prozess gefunden haben, den Sie beenden möchten, können Sie ihn mit
killall
beenden ,pkill
,kill
,xkill
odertop
Befehle. - Wenn Sie einen Prozess beenden, können Sie ein Beendigungssignal von SIGHUP, SIGKILL oder SIGTERM senden.
- Sie benötigen die Berechtigung zum Beenden eines Prozesses, die Sie durch die Verwendung von
sudo
erhalten können Befehl.