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

Wie beendet man einen Prozess in Linux? Befehle zum Beenden

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.

ist

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 oder pgrep Befehle.
  • Sobald Sie den Prozess gefunden haben, den Sie beenden möchten, können Sie ihn mit killall beenden , pkill , kill , xkill oder top 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.

Linux
  1. So beenden Sie einen Zombie-Prozess unter Linux

  2. So finden und töten Sie den Zombie-Prozess in Linux

  3. Linux-Befehle:So manipulieren Sie die Prozesspriorität

  4. So beenden Sie laufende Prozesse in Linux

  5. Linux:Finde und töte Zombie-Prozesse

Wie man einen Prozess unter Linux beendet

So beenden oder beenden Sie einen Linux-Prozess:Der ultimative Leitfaden

Befehle für das Prozessmanagement in Linux

So senden Sie Prozesse unter Linux an den Hintergrund

So töten Sie Zombie-Prozesse in Ubuntu

So beenden Sie Prozesse in Linux mit kill, killall und pkill