So beenden Sie einen Prozess in Linux

Prozessmanagement unter Linux: Ein umfassender Leitfaden

Es gibt Momente, in denen unser Rechner träge reagiert, selbst bei den simpelsten Aufgaben. Windows bietet uns den Task-Manager, um ressourcenintensive Prozesse zu inspizieren und zu beenden. Unter Linux hingegen steht uns eine breite Palette an Kommandozeilen- und GUI-Tools zur Verfügung. In diesem Artikel werden wir verschiedene Methoden zur Prozessbeendigung unter Linux vorstellen, sowohl über die Kommandozeile als auch mit grafischen Oberflächen.

Grundlagen des Prozessmanagements in Linux

Bevor wir uns detaillierter mit dem Prozessmanagement unter Linux auseinandersetzen, ist es wichtig, die grundlegenden Konzepte zu verstehen. Was genau ist ein Prozess, und was bedeutet die Prozess-ID?

Was sind Prozesse in Linux?

In Linux wird jede laufende Instanz eines Programms als „Prozess“ bezeichnet. Jede ausführbare Datei ist ein Programm. Wenn ein Programm gestartet wird, wird ein Prozess erzeugt. Jeder Prozess erhält eine einzigartige, fünfstellige Identifikationsnummer, die als „Prozess-ID“ bekannt ist. Nach Beendigung des Prozesses oder dessen zwangsweiser Beendigung wird die Prozess-ID wiederverwendet.

Prozesse über die Kommandozeile beenden

Die Kommandozeile mag für Anfänger abschreckend wirken, doch sie erweist sich als äußerst effizient für die Prozessverwaltung, sobald man sich mit den Befehlen und ihren Optionen vertraut gemacht hat.

Terminierungssignale

Wenn Sie einen Prozess beenden, sendet der Kernel ein Terminierungssignal. Das Verhalten des Prozesses hängt vom empfangenen Signal ab. Jedes Signal hat eine zugeordnete Nummer. Die wichtigsten Signale sind:

Signal Nummerischer Wert Beschreibung
SIGHUP 1 „Signal Hangup“ – wird beim Schließen des Terminals gesendet.
SIGINT 2 „Signal Interrupt“ – wird gesendet, wenn der Benutzer den Prozess beendet.
SIGKILL 9 „Signal Kill“ – sofortige Beendigung des Prozesses.
SIGTERM 15 „Signal Termination“ – Beendigung mit Freigabe von Ressourcen.
SIGSTOP 19 (ARM, x86), 17 (Alpha), 23 (MIPS), 24 (PA-RISC) „Signal Stop“ – Prozess anhalten und später fortsetzen.

SIGKILL (9) und SIGTERM (15) sind die am häufigsten verwendeten Signale.

Prozess-IDs ermitteln

Vor der Beendigung eines Prozesses müssen Sie seine Details, wie Prozess-ID und Laufzeit, kennen. Der Befehl ps liefert diese Informationen:

ps

Da die ps-Ausgabe umfangreich sein kann, ist die Kombination mit grep hilfreich, um gezielt nach Prozessen zu suchen:

ps | grep <Prozessname>

Alternativ zeigt pidof direkt die Prozess-ID an:

pidof <Prozessname>

Prozesse mit dem kill-Befehl beenden

Der kill-Befehl ist der gängigste Befehl zur Prozessbeendigung. Die Syntax lautet:

kill <signal> <prozess_id>

Der Parameter <signal> ist optional, standardmäßig wird SIGTERM (15) gesendet. Sie können ein anderes Signal anhand seiner Nummer oder seines Namens verwenden.

Prozesse mit dem pkill-Befehl beenden

Der Befehl pkill beendet Prozesse, die einem bestimmten Muster entsprechen. Die Syntax ist:

pkill <Optionen> <Muster>

Häufige Optionen sind:

Option Beschreibung
-n Wählt nur die neuesten Prozesse aus.
-u Wählt Prozesse eines bestimmten Benutzers aus.
-x Wählt Prozesse mit genauer Musterübereinstimmung aus.

Dies ist nützlich, wenn mehrere Benutzer dieselbe Anwendung verwenden und ein Prozess Fehlverhalten zeigt. Zum Beispiel:

pkill -u intel gedit

Dieser Befehl beendet die gedit-Instanz des Benutzers „intel“.

Prozesse mit dem killall-Befehl beenden

Der killall-Befehl beendet alle Prozesse, die dem angegebenen Namen entsprechen, unabhängig vom Benutzer. Die Syntax lautet:

killall <Optionen> <Prozessname>

Einige Optionen sind:

Option Beschreibung
-r Interpretiert den Prozessnamen als regulären Ausdruck.
-u Beendet Prozesse eines bestimmten Benutzers.
-o Beendet Prozesse, die älter als eine bestimmte Zeit sind.
-y Beendet Prozesse, die jünger als eine bestimmte Zeit sind.

Ein Beispiel:

killall -v schlafen

Dieser Befehl beendet alle Prozesse namens „schlafen“.

Prozesse mit top/htop beenden

Diese Tools sind nützlich, um ressourcenintensive Prozesse zu identifizieren und zu beenden. Der Befehl top wird wie folgt aufgerufen:

top

Die Ausgabe ist in Spalten unterteilt:

  • PID – Prozess-ID
  • USER – Benutzer
  • PR – Priorität
  • NI – Nice-Wert
  • VIRT – Virtueller Speicher
  • RES – Physischer Speicher
  • SHR – Gemeinsam genutzter Speicher
  • S – Status (D=unterbrechungsfrei, R=läuft, S=schlafend, T=angehalten, Z=Zombie)
  • %CPU – CPU-Nutzung
  • %MEM – RAM-Nutzung
  • TIME+ – Laufzeit
  • COMMAND – Befehl

Mit den Pfeiltasten oder durch Eingabe von „L“ (Suchen) und dem Prozessnamen navigieren Sie zur Aufgabe, die Sie beenden möchten. Drücken Sie „k“, geben Sie die Prozess-ID oder den markierten Prozess ein und dann das Beendigungssignal. Mit „q“ verlassen Sie das Programm.

htop ist benutzerfreundlicher und bietet eine übersichtlichere Darstellung. Installieren Sie es mit:

sudo apt install -y htop

Starten Sie es mit:

htop

Mit „F9“ und der Eingabetaste beenden Sie einen Prozess. Mit „F3“ können Sie suchen und die passenden Prozesse mit F9 und der Eingabetaste beenden.

Prozesse über den Systemmonitor beenden

Alternativ zu den Kommandozeilen-Tools können Sie den grafischen Systemmonitor verwenden. Wählen Sie im Anwendungsmenü den Systemmonitor, gehen Sie zum Reiter „Prozesse“, suchen Sie mit „STRG+F“ nach einem Prozessnamen, wählen Sie ihn aus und klicken Sie auf „Prozess beenden“.

Bestätigen Sie die Beendigung im nächsten Dialogfenster mit der roten Schaltfläche „Prozess beenden“.

Häufig gestellte Fragen

Wie stoppe ich alle Prozesse in Linux?

Um alle Prozesse eines bestimmten Benutzers zu beenden, verwenden Sie:

pkill -u <Benutzername>

killall -u <Benutzername>

Um alle Prozesse, inklusive des Init-Systems, zu beenden, drücken Sie „ALT + Prt Sc + o“.

Ist es in Ordnung, einen Prozess zu beenden?

Das Beenden unwichtiger Hintergrund- oder Benutzerprozesse kann Ressourcen freisetzen. Achten Sie darauf, keine wichtigen Systemprozesse zu beenden.

Was sind Hintergrundprozesse in Linux?

Hintergrundprozesse laufen ohne direkte Interaktion oder Shell-Instanz. Sie können mit top, htop, ps usw. angezeigt werden.

Was ist ein Zombie-Prozess?

Ein Zombie-Prozess ist ein beendeter Prozess, der immer noch Speicher belegt.

Was macht STRG + Z unter Linux?

STRG + Z sendet das SIGTSTP-Signal, das den Prozess anhält und in den Hintergrund schickt. Ein angehaltener Prozess im Hintergrund kann nicht beendet werden, bevor er wieder in den Vordergrund gebracht wird.

Fazit

Die Beendigung speicherintensiver Prozesse ist eine wichtige Fähigkeit. Wir haben verschiedene Methoden zur Prozessbeendigung unter Linux vorgestellt, sowohl über die Kommandozeile als auch grafisch. Mit Tools wie killall, pkill, top und htop können Sie Ihr Linux-System effizient verwalten. Wenn Sie Fragen oder Probleme haben, können Sie diese gerne in den Kommentaren mitteilen.