Befehle für das Prozessmanagement

cog_featured

Grundsätzlich ist Linux/UNIX ein sehr stabiles System - dennoch kann es zu Fehlern kommen. In diesem Beitrag lernen Sie einige der wichtigsten Befehle kennen, mit denen Sie Fehler und Instabilitäten erkennen und beheben, sowie das System besser an Ihre Bedürfnisse anpassen können.

Laufende Prozesse anzeigen

Linux ist, ähnlich wie die meisten modernen Betriebssysteme, Multitasking-fähig. Das heißt, dass eine Vielzahl von Prozessen gleichzeitig ausgeführt werden kann. Neben Prozessen, die Sie selbst auf dem System ausführen, ist es beispielsweise möglich, dass noch Prozesse anderer Benutzer auf dem System laufen.

top

Eine dynamische Übersicht dieser laufenden Prozesse, sowie verschiedener Systemressourcen kann mit dem Befehl top angezeigt werden.

top

Im Folgenden ist ein Beispiel für die Ausgabe des Top-Befehls zu sehen:

befehl-top-ausgabe

Wenn Sie näheres zu dem Befehl top und den angezeigten Daten wissen wollen, dann können Sie diese Informationen in unserem Beitrag zum Befehl top nachlesen.

ps

Neben top gibt es noch den Befehl ps (processes), um laufende Prozesse anzuzeigen. Der Befehl zeigt bei der Verwendung ohne zusätzliche Optionen oder Parameter die Prozesse an, die im momentan geöffneten Terminal laufen:

ps

Durch den Zusatz aux kann auch eine Übersicht des gesamten Systems ausgegeben werden:

ps aux

Im Folgenden sehen Sie einen Ausschnitt der Ausgabe von ps aux:

ps-aux-ausgabe-beschriftet

Angezeigt werden ähnliche Daten wie auch bei dem Befehl top:

  • USER - Besitzer des Prozess (1)
  • PID - Prozess-ID des Prozess (2)
  • %CPU - CPU-Auslastung durch den Prozess (Verwendete CPU-Zeit geteilt durch die gesamte Laufzeit des Prozess) (3)
  • %MEM - Anteil des Tasks am physikalischen Speicher (4)
  • VSZ - Auslastung des virtuellen Speichers durch den Prozess (5)
  • RSS - Größe des durch den Prozess belegten physikalischen Speichers (in KiloBytes) (6)
  • TTY - Terminal (7)
  • STAT - Prozessstatus (8)
  • START - Startzeit des Prozesses (9)
  • TIME - kumulative CPU Zeit (10)
  • COMMAND - Aufrufbefehl mit allen Argumenten (11)

Aufgrund der Fülle an Informationen ist es oft hilfreich, die Ausgabe von ps aux mithilfe einer Pipe in den Befehl grep zu leiten und anschließend mit einem Suchmuster zu filtern. Näheres zu grep können Sie in unserem Artikel zu diesem Befehl nachlesen. Auch Informationen zu Pipes und Umleitungen können Sie in einem unserer Beiträge finden.

Prozesse beenden mit kill

Wenn ein Prozess stehen geblieben ist, oder ein unerwünschter Prozess auf Ihrem System ausgeführt wird, dann kommt der Befehl kill zum Einsatz. Der Befehl wird verwendet, um Prozesse mit einer bestimmten PID zu beenden. Die Syntax lautet folgendermaßen:

kill [Optionen] [PID]

Bei Ausführung des Befehls ohne zusätzliche Optionen sendet der Befehl standardmäßig das Signal SIGTERM (15). Dieses schließt die Ausführung eines Programms ab und beendet es schließlich auch. Mit der Option -s lässt sich beeinflussen, welches Signal durch den Befehl gesendet wird:

kill -s [Signal] [PID]

Wenn ein Prozess/Programm durch das Standard-Signal nicht beendet wird, dann besteht beispielsweise die Möglichkeit, den Kernel mit einem SIGKILL (9) zu beauftragen, den Prozess zu debuggen (Dump) und hart abzubrechen:

kill -s SIGKILL [PID]

Es gilt zu beachten, dass zunächst immer versucht werden sollte, Prozesse mit dem Signal SIGTERM (15) zu beenden - Das jeweilige Programm kann das Signal in solchen Fällen noch abfangen und programmspezifische Aktionen durchführen, um sich sauber zu beenden. Erst wenn dieses Signal nicht angenommen wird, kann das Signal SIGKILL (9) herangezogen werden.

Tastenkombinationen

Bei der Verwaltung von Vordergrund- und Hintergrundprozessen gibt es einige hilfreiche Tastenkombinationen, welche auch im späteren Verlauf noch benötigt werden. Diese werden im Folgenden einmal  kurz vorgestellt.

Shell-Prozess beenden

Mit der Tastenkombination [Ctrl+c] können beliebige im Vordergrund der Shell laufende Prozesse beendet werden.

Beispiel: Shell-Prozess beenden

Terminal:

wget -nv https://profi-tutorials.de/linux/
^C

Bedeutung:

Zunächst wurde der Befehl wget ausgeführt, um eine Datei herunterzuladen. Die Ausführund des Befehls wurde anschließend mit der Tastenkombination [Ctrl+c] vorzeitig beendet.

Shell-Prozess anhalten

Mit der Tastenkombination [Ctrl+z] können Sie einen Vordergrund-Prozess der Shell auch anhalten. Es wird die Jobnummer (1), der neuer Status des Jobs (2), sowie der komplette Aufrufbefehl (3) im Terminal ausgegeben:

ausgabe-job-angehalten
Beispiel: Shell-Prozess anhalten

Terminal:

wget -nv https://profi-tutorials.de/it-consulting/
^Z
[3]+ Angehalten wget -nv https://profi-tutorials.de/it-consulting/

Bedeutung:

Auch hier wurde wieder der Befehl wget ausgeführt. In diesem Fall wurde er jedoch durch die Tastenkombination [Ctrl+z] angehalten. Im Terminal wird zusätzlich die Jobnummer, der neue Status des Jobs und der ursprüngliche Aufrufbefehl ausgegeben.

Vordergrund- und Hintergrundprozesse

Befehle / Programme werden standardmäßig im Vordergrund ausgeführt. Dieser Umstand stellt in den meisten Fällen kein Problem dar, da viele Programme innerhalb von kurzer Zeit bis zur Fertigstellung laufen. Wenn Sie jedoch einen lang laufenden Prozess starten wollen, welcher keine besonderen Eingaben von Ihnen benötigt, dann können Sie dies auch im Hintergrund tun.

Anzeigen von in der Shell gestarteten Prozessen

Zunächst ist es wichtig, die Prozessstatus von Prozessen, welche in der Shell gestartet wurden einsehen zu können. Der Befehl jobs listet alle Prozesse in der aktuellen Shell auf:

jobs

Angezeigt wird die Jobnummer, der aktuelle Prozessstatus, sowie auch der komplette Aufrufbefehl - ähnlich wie bei den beiden Befehlen top und ps.

Beispiel: jobs

Eingabe:

jobs

Ausgabe:
ausgabe-jobs

Vordergrundprozesse in den Hintergrund verlagern

Im Vordergrund der Shell laufende Prozesse können in den Hintergrund verlagert werden. Dazu muss der jeweilige Prozess jedoch zunächst mit der zuvor vorgestellten Tastenkombination [Ctrl+z] angehalten werden. Anschließend kommt der Befehl bg zum Einsatz, um den Prozess im Hintergrund fortzusetzen. Die Syntax von bg lautet:

bg %[Jobnummer]

Nach dem Start des Hintergrundprozess wird zunächst die Jobnummer und der ursprüngliche Aufrufbefehl ausgegeben, anschließend wird das Terminal wieder für die Eingabe freigegeben und es können andere Aufgaben erledigt werden.

Beispiel: Vordergrundprozess in den Hintergrund verlagern

Hier wollen wir anhand von dem sleep Befehl einmal einen Prozess im Vordergrund starten und diesen anschließend in den Hintergrund verlagern. An erster Stell wird der Befehl sleep mit dem Parameter 60 gestartet. Der Job würde nun für 60 Sekunden im Vordergrund ausgeführt werden, er wird jedoch vorzeitig mit [Ctrl+z] angehalten. Anschließend wird der Job mit dem Befehl bg im Hintergrund fortgeführt.

In der durch den jobs Befehl ausgegebenen Übersicht ist der laufende Job schließlich zu sehen.

1. Eingabe:

sleep 60

^Z

1. Ausgabe:

[4]+ Angehalten sleep 60

2. Eingabe:

bg %4

2. Ausgabe:

[4]+ sleep 60 &

3. Eingabe:

jobs

3. Ausgabe:

[4]- Läuft sleep 60 &

Prozesse im Hintergrund starten

Durch Anfügen des Kaufmanns-Und & kann ein beliebiger Befehl oder Prozess auch sofort im Hintergrund gestartet werden:

[Befehl] [Optionen] &

Im Terminal wird die zugewiesene Jobnummer und PID angezeigt.

Beispiel: Prozess im Hintergrund starten

Eingabe:

wget -nv https://profi-tutorials.de/e-business/ &

Ausgabe:

[5] 3006

Hintergrundprozesse in den Vordergrund verlagern

Hintergrundprozesse können mit dem Befehl fg in den Vordergrund verlagert werden:

fg %[Jobnummer]
Beispiel: Hintergrundprozess in den Vordergrund verlagern

In diesem Beispiel soll der im Hintergrund laufende sleep Prozess in den Vordergrund verlagert werden. Dazu wird zunächst der Befehl jobs verwendet, um den Job mitsamt seiner Jobnummer anzuzeigen. Im Anschluss wird der Befehl fg mit der jeweiligen Jobnummer ausgeführt, um den Job in den Vordergrund zu verlagern.

1. Eingabe:

jobs

1. Ausgabe:

[4]- Läuft sleep 60 &

2. Eingabe:

fg %4

2. Ausgabe:

sleep 60

Abonniere JETZT unseren Newsletter!


Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!

Joel Benseler

Click Here to Leave a Comment Below

Leave a Comment: