Die Verwaltung von Prozessen in Linux kann für einen neuen Systemadministrator (Sysadmin) zunächst einschüchternd wirken. Aber mit etwas Erklärung und Demonstration wirst du lernen, wie du Linux-Prozesse finden und beenden kannst, indem du Befehlszeilentools wie ps
und kill
verwendest.
In diesem Artikel lernst du Befehle zum Auffinden laufender und fehlerhafter Prozesse, zum Beenden (Terminieren) laufender Prozesse, zum Auffinden von Hintergrundprozessen und vielem mehr auf jedem Linux-Betriebssystem.
Am Ende des Artikels wirst du Prozesse basierend auf Prozessidentifikationsnummern (PIDs) von der Befehlszeile aus wie ein Linux-Profi verwalten können. Lies weiter, um alles über Prozessverwaltungsbefehle in Linux zu erfahren!
Voraussetzungen
In diesem Artikel wird erklärt, wie man Prozesse in Linux verwaltet. Wenn du praktisch mitmachen möchtest, benötigst du Folgendes:
- A Linux host, which can be a virtual machine or a physical machine.
- Um die PowerShell-Beispiele auszuprobieren, installiere PowerShell 7.1.1 auf einem Linux-Host.
- A non-root user account. While root access is not required, there will be an example where the root user can kill the running process of another user.
Die Linux-Distribution, die du verwenden möchtest, liegt bei dir. Dieser Artikel basiert auf Ubuntu 20.04 LTS. Die Befehle sind jedoch standardmäßig für das Linux-Betriebssystem.
Bereit, loszulegen? Gut, dann tauchen wir ein.
Prozessverwaltung in Linux
Gelegentlich kann es vorkommen, dass Sie auf einem Linux-System einen laufenden Prozess beenden müssen. Zum Beispiel könnte ein Bash-Skript geplant sein, das zu bestimmten Zeiten ausgeführt wird. Dieses Bash-Skript ist so konfiguriert, dass es über einen Cron-Job (Linux-Prozessplaner) als ein anderer Benutzer ausgeführt wird.
Manchmal erzeugt dieses Skript fehlerhafte Prozesse, die das Skript scheitern lassen können. Wie können Sie diese fehlerhaften Prozesse beenden, ohne das System neu zu starten oder das Skript zu stoppen?
In den nächsten Abschnitten werden Befehle zum Auffinden und Beenden oder Beenden von Prozessen auf einem Linux-System behandelt. Jeder Abschnitt baut auf dem vorherigen auf. Sie werden die Befehle ps
, top
, pgrep
, kill
und pkill
kennenlernen, die alle in Linux nativ vorhanden sind.
Als Bonus sind auch äquivalente PowerShell-Befehle Get-Process
und Stop-Process
enthalten, falls Ihnen die nativen Linux-Befehle nicht zusagen.
Tools zum Auffinden von Prozessen
Bevor Sie einen Prozess beenden können, müssen Sie den richtigen Prozess ausfindig machen. Die eindeutige PID ermöglicht eine präzise Zielauswahl. Lesen Sie weiter, um zu erfahren, wie Sie die richtigen Prozesse zum Beenden finden können.
Verwendung des Befehls ps
zur Anzeige von Prozessinformationen
Der Befehl Prozessstatus oder ps
zeigt Informationen zu aktiven Prozessen auf einem Linux-System an. Mit ps
können Sie einen laufenden Prozess finden und sogar Hintergrundprozesse.
Der Befehl ps
zeigt standardmäßig alle Prozesse für die effektive Benutzerkennung (EUID) des aktuellen Benutzers an. Wenn Sie den Befehl ps
wie unten gezeigt ausführen, werden alle laufenden Prozesse zurückgegeben, die Ihr Benutzer beenden kann.

bkindle
.Erweiterte Prozessinformationen mit dem Befehl top
finden
Was ist, wenn Sie ständig aktualisierte Informationen zu laufenden Prozessen und Systemmetriken finden möchten? In diesem Fall können Sie den Befehl top
verwenden. Im Gegensatz zu ps
aktualisiert der Befehl top
die Prozessinformationen auf dem Bildschirm in festgelegten Intervallen.
Wenn Sie den Befehl top
ausführen, sehen Sie mehr als nur eine PID. Neben Prozessdetails werden CPU- und Speicherprozentsätze, Nice-Werte (CPU-Zeitplanung Prozesspriorität) und die vom Linux-Kernel festgelegte Prozesspriorität (PR) angezeigt.
Für einen neuen oder erfahrenen Systemadministrator ist der Befehl top
oft das Hauptwerkzeug zur Verwaltung wichtiger Systemressourcen und Prozesse. Wie unten gezeigt, zeigt die Ausgabe des Befehls top
mehr Prozessinformationen als der Befehl ps
, einschließlich allgemeiner Systemmetriken.

top
command on Ubuntu Desktop 20.04 LTS showing all running PID’s.htop
ist eine verbesserte Variante von top
, die verschiedene Verbesserungen enthält, wie z.B. eine farbige Terminalausgabe.
Angenommen, Sie möchten den Speicher oder die CPU-Ressourcen eines Prozesses überprüfen. In diesem Fall können Sie den p
-Schalter von top
verwenden, wie unten gezeigt.

Vielleicht müssen Sie alle laufenden Prozesse für einen bestimmten Benutzernamen anzeigen. Der Befehl top
bietet den u
-Schalter, um nur die Prozesse eines bestimmten Benutzers anzuzeigen. Wie im folgenden Beispiel gezeigt, werden nur PIDs angezeigt, die der Benutzer-ID bkindle
entsprechen.

top
command displaying only processes for the user bkindle
.Suchen nach bestimmten Prozess-PIDs mit dem Befehl pgrep
Ursprünglich ein Solaris-Befehl, wurde pgrep
für die Verwendung mit Linux portiert. Durch die Kombination der Suchfunktion des Befehls grep
und der Prozessverwaltung von ps
bietet pgrep
Flexibilität beim Auffinden des genauen zu zielenden Prozesses.
Obwohl ps
mehr Informationen anzeigt, ist pgrep
darauf ausgelegt, nur die PID der zurückgegebenen Prozesse zurückzugeben. pgrep
hilft beim Auffinden des Prozesses mithilfe der vielen verfügbaren Suchparameter. Im folgenden Beispiel wird gezeigt, wie pgrep
nach einem beliebigen Prozess sucht, der vmtoolsd
entspricht.

pgrep
to obtain all PIDs associated with vmtoolsd
.Geben Sie mit dem u
-Schalter eine Benutzer-ID an, um nur Prozesse abzurufen, die mit diesem bestimmten Benutzer verbunden sind. Wie unten gezeigt wird, wird nur eine einzige PID für den Benutzer bkindle
und den Prozess vmtoolsd
zurückgegeben.

vmtoolsd
process associated with the user bkindle
.Auffinden von Prozessen mit PowerShell’s Get-Process
unter Linux
Normale Linux-Befehle funktionieren gut, aber wussten Sie, dass PowerShell auch Linux-Prozesse verwalten kann? Das Cmdlet Get-Process
funktioniert ähnlich wie der Linux-Befehl ps
und liefert Informationen zu Prozessen. Möglicherweise müssen Sie beispielsweise alle laufenden Prozesse des aktuellen Benutzers bkindle
finden. Wie unten gezeigt, finden Sie alle PIDs (mit Get-Process
als ID bezeichnet) des Benutzers bkindle
.

Get-Process
cmdlet.Verwandt: Wie man PowerShell Where-Object verwendet, um alles zu filtern
Nachdem Sie gelernt haben, wie Sie verschiedene Prozesse lokalisieren können, lesen Sie weiter, um alle Möglichkeiten zur Beendigung oder Beendigung eines Prozesses in Linux zu entdecken!
Beenden von Prozessen mit den Kill-Befehlen in Linux
In den vorherigen Abschnitten haben Sie gelernt, wie Sie die PID des Prozesses ermitteln, an den Sie ein Beendigungssignal senden möchten, indem Sie native Linux- und PowerShell-Befehle verwenden. In den nächsten Abschnitten wird erklärt, wie Sie die Programme kill
und pkill
, ihre zugehörigen Signale und Befehlszeilenschalter verwenden.
Linux-Signale und Prozessverwaltung
Signale sind die Methode, die Linux verwendet, um mit Prozessen zu kommunizieren, die im Betriebssystem ausgeführt werden. Die drei Hauptsignale, die der Befehl kill
verwendet, um Prozesse zu beenden, sind:
- 1 (SIGHUP) – Beendet interaktive Programme und veranlasst Daemons (Hintergrunddienste), die Konfigurationsdateien erneut zu lesen, die der Prozess verwendet.
- 9 (SIGKILL) – Zwingt den Prozess zum Beenden, ohne die Aufgaben eines ordnungsgemäßen Herunterfahrens auszuführen.
- 15 (SIGTERM) – Ermöglicht einem Prozess ein ordnungsgemäßes Beenden, z. B. das Schließen von geöffneten Dateien bei Beendigung. Dies ist das Standard-Signal, das verwendet wird, wenn keine Nummer angegeben wird, wenn der Kill-Befehl verwendet wird.
In diesem Artikel werden nur die drei Hauptsignale behandelt, die zum Beenden von Prozessen verwendet werden. Es gibt insgesamt 64 verfügbare Signale. Verwenden Sie
kill -l
, um die Liste der Signale und ihre entsprechende Nummer zu erhalten.
Jetzt, da Sie die drei Hauptsignale zum Beenden eines Prozesses verstehen, erfahren Sie in den nächsten Abschnitten, wie Sie einen Prozess beenden können.
Verwenden des kill
-Befehls zum Beenden eines Prozesses
In diesem nächsten Beispiel verwenden Sie den kill
-Befehl. Stellen Sie sich für einen Moment vor, dass Sie eine PowerShell-Instanz mit dem Namen pwsh
ausführen und die zugewiesene PID 22687 ist. Eine Möglichkeit, diesen Prozess zu beenden, wird unten gezeigt.
- Verwenden Sie
pgrep pwsh
, um die PID für den Prozesspwsh
zu ermitteln, die imkill
-Befehl verwendet wird. - Verwenden Sie
kill -s TERM 22687
, um denpwsh
-Prozess ordnungsgemäß zu beenden. Der BefehlTERM
entspricht dem Signal 15 (SIGTERM) und wird mit dem Parameters
des Befehlskill
angegeben. - Verwenden Sie
top
,ps
oderpgrep
, um den PID zu überprüfen und sicherzustellen, dass er nicht mehr aufgeführt ist.
Hier ist ein Beispiel für den oben genannten Vorgang von einem Ubuntu 20.04 LTS Bash-Terminal:

kill
and associated commands to terminate the pwsh
process.Der Befehl
killall
beendet alle Prozesse anhand eines Namens anstelle der PID und kann ziemlich zerstörerisch sein, wenn er unvorsichtig verwendet wird. Wenn Sie sich jedoch für die Verwendung dieses Befehls entscheiden, verwenden Sie die Optioni
, um den Befehl um Bestätigung zu bitten.
Prozesse nach Namen mit dem Befehl pkill
beenden
Sie haben möglicherweise bemerkt, dass der Befehl kill
nur mit Prozess-IDs funktioniert. Dies kann das Beenden eines Prozesses zu einem komplizierten mehrstufigen Vorgang machen. Der Befehl pkill
, der in den Paketen procps und procps-ng enthalten ist, beendet einen Prozess anhand eines gesuchten Namens.
Funktional wirkt der Befehl pkill
als Wrapper um das Programm pgrep
. Der Befehl pkill
sendet anstelle der Auflistung der PIDs im Terminal ein spezifiziertes Signal an jeden gefundenen Prozess. pkill
unterscheidet sich von kill
darin, dass pkill
nur den Namen eines Prozesses verwenden kann, nicht jedoch die PID.
Standardmäßig ist der Befehl
pkill
in Ubuntu 20.04 LTS nicht verfügbar. Sie müssen die Anwendung herunterladen und installieren. Führen Sie dazu den Befehlsudo apt install mcollective-plugins-process -y
aus.
Um einen Prozess mit dem Befehl pkill
zu beenden, führen Sie die folgenden Schritte aus:
- Verwenden Sie
ps
, um zu überprüfen, ob die Nano-Anwendung (ein textbasierter Editor) derzeit läuft. Dieser Schritt ist optional, dient jedoch als Sicherheitsüberprüfung vor dem Beenden eines Prozesses. - Verwenden Sie
pkill -9 nano
, um die Nano-Anwendung gewaltsam zu beenden.
Im Folgenden finden Sie ein Beispiel für den oben beschriebenen Prozess in einem Ubuntu 20.04 LTS Bash-Terminal.

pkill
command to forcefully terminate the nano process.Einen Prozess mit dem Befehl top
beenden
Wenn Sie den Befehl top
ausführen, um laufende Prozesse anzuzeigen, können Sie einen bestimmten Prozess mit der k-Taste beenden. Es wird eine interaktive Aufforderung angezeigt, in der Sie die PID des zu beendenden Prozesses angeben müssen.
Wie unten gezeigt, führen Sie den Befehl top
aus und drücken k. Geben Sie die PID ein, die Sie beenden möchten, und drücken Sie die Eingabetaste, um die PID sofort zu beenden.

top
to specify a process to terminate using the k keystroke.Lernen Sie als nächstes eine weitere Alternative zu nativen Linux-Befehlen mit dem PowerShell-Befehl Stop-Process
kennen!
Verwenden des PowerShell-Befehls Stop-Process
zum Beenden eines Prozesses
Wenn Ihnen die nativen Linux-Befehle nicht zusagen, können Sie auf PowerShell zurückgreifen! Genau wie mit dem kill
-Befehl können Sie Prozesse mit dem Stop-Process
-Cmdlet in Linux beenden. Gehen Sie erneut davon aus, dass Sie einen PowerShell-Prozess pwsh
ausführen.
- Suchen Sie die PID mit
Get-Process -ProcessName 'pwsh'
und notieren Sie die PIDs zum Beenden. - Verwenden Sie
Stop-Process -Id 29992,30014
, um die zurückgegebenen mehreren Prozesse zu beenden. - Verwenden Sie
Get-Process -ProcessName 'pwsh'
und überprüfen Sie die PIDs. Die PIDs29992
und30014
werden nicht mehr aufgelistet, was bedeutet, dass sie beendet wurden.
Sie können auch
Get-Process
und diekill
-Methode verwenden, um einen oder mehrere Prozesse zu beenden:(Get-Process -Id [PID]).Kill()
oder(Get-Process -Id [PID1,2,3,4]).Kill()
.Vorsicht beim Verwenden des
ProcessName
-Parameters. Die Verwendung dieses Parameters verhält sich ähnlich wie derkillall
-Befehl und beendet alle Prozesse, die den angegebenen Namen entsprechen.
Hier ist ein Beispiel für den obigen Prozess aus einem Ubuntu 20.04 LTS Bash-Terminal.

Stop-Process
to kill processes in Linux.Nächste Schritte
Sie sollten jetzt die verschiedenen Möglichkeiten kennen, um Prozesse in Linux zu finden und zu beenden! Für Ihre nächste Herausforderung sollten Sie versuchen, Prozesse über SSH-Verbindungen remote zu beenden oder Prozesse zu beenden, die möglicherweise in Containern ausgeführt werden.
Verwandt: Ein Windows-Typ in einer Linux-Welt: Einrichten von SSH in Linux