2. Prozessverwaltung

Aus der Sicht des Systems laufen Anwendungen in einem oder mehreren Prozessen und belegen dabei Systemresourcen wie Speicher und Prozessorzeit. Wir stellen Ihnen hier einige Befehle vor, mit denen Sie diese Prozesse (und damit deren Anwendungen) überwachen und beeinflussen können.

2.1. Prozesse anzeigen

Der Befehl ps zeigt eine Liste von Prozessen, die auf dem System laufen, entsprechend der von Ihnen gesetzten Kriterien.

Die Eingabe von ps ohne Argumente zeigt nur die von Ihnen und in Ihrem Terminal gestarteten Prozesse:

$ ps
      PID TTY          TIME CMD
    18614 pts/3    00:00:00 bash
    20173 pts/3    00:00:00 ps

Die gebräuchlichsten Optionen sind:

  • a: zeigt die Prozesse aller Benutzer;

  • x: zeigt die Prozesse, die von allen Terminals gestartet wurden, nicht nur die Ihres Terminals;

  • u: zeigt für jeden Prozess den Namen des Benutzers an, der ihn gestartet hat, dazu die Zeit, wann der Prozess gestartet wurde.

2.2. Prozesse kontrollieren

Prozesse werden durch Signale kontrolliert. die Befehle kill und killall werden dazu benutzt, solche Signale an Prozesse zu übermitteln. Der Befehl kill benötigt als Argument eine Prozessnummer, während der Befehl killall einen Prozessnamen verlangt.

[Anmerkung] Anmerkung

Bitte beachten Sie, dass Prozesse unterschiedlich auf die gleichen Signale reagieren können. Sie können nicht a priori erwarten, dass sich ein Prozess erwartungsgemäß verhält, wenn er ein Signal empfängt.

kill [-SIGNAL] <Prozess_Nummer>
killall [-SIGNAL] <Prozess_Name>

Signale können durch einen Namen oder eine Nummer spezifiziert werden. Führen Sie den Befehl kill -l aus, so sehen Sie eine Liste der verfügbaren Signale. Die meist benutzten Signale sind:

  • TERM oder 15: dies ist das Standardsignal, das gesendet wird, wenn weder Signalname noch Signalnummer angegeben werden. Es beendet den Prozess ordnungsgemäß („sanft“).

  • STOP oder 19: dieses Signal wird benutzt, um einen Prozess temporär anzuhalten. Zur Wiederaufnahme eines pausierenden Prozesses senden Sie das Signal CONT oder 18.

  • KILL oder 9: mit diesem Signal erzwingen Sie die Beendigung eines Prozesses. Es wird üblicherweise benutzt, um einen nicht mehr reagierenden (oder „eingefrorenen“) Prozess zu beenden. Es beendet den Prozess sofort.

Einige Beispiele:

  • kill 785: teilt dem Prozess mit der Nummer 785 mit, dass er seine Arbeit beenden soll, gibt ihm aber die Möglichkeit, eventuelle Aufräum-Operationen ordnungsgemäß abzuschließen;

  • kill -KILL 785: erzwingt den Abbruch des Prozesses mit der Nummer 785. Der Prozess wird augenblicklich beendet und hat keine Möglichkeit, Aufräum-Operationen durchzuführen;

  • killall -TERM make: gibt allen Prozessen mit dem Namen make, die von diesem Benutzer gestartet wurden, den Befehl, ihre Operationen zu beenden.

Was auch passiert, Sie kontrollieren nur Ihre eigenen Prozesse. Um die Prozesse anderer Benutzer müssen Sie sich keine Sorgen machen (solange Sie nicht root sind), sie werden von den Befehlen nicht betroffen.

2.3. Gemeinsame Benutzung von ps und kill: top

top ist ein Programm, das sowohl die Funktionen von ps als auch kill beinhaltet und darüber hinaus auch zur Beobachtung von Prozessen in Echtzeit dient. Es gibt Auskunft über Werte wie CPU- und Speicherbeanspruchung, Laufzeitdauer, usw. (siehe Abbildung 17.1, „Prozessüberwachung mit top“).

Abbildung 17.1. Prozessüberwachung mit top

Prozessüberwachung mit top

Das Werkzeug top wird ausschließlich durch die Tastatur bedient. Die Befehle unterliegen der Groß-/Kleinschreibung. Eine Hilfe erhalten Sie durch die Taste h. Es folgen die wichtigsten Befehle:

  • k: schickt ein Signal an einen Prozess. Sie werden nach der Prozess-PID und anschließend nach der Nummer oder dem Namen des zu sendenden Signals gefragt (standardmäßig TERM oder 15);

  • M: sortiert die Prozessliste nach der Menge des belegten Speichers (Spalte %MEM);

  • P: sortiert die Prozesse nach der CPU-Zeit, die sie beanspruchen (Spalte %CPU): die Standardeinstellung;

  • u: zeigt die Prozesse des angegebenen Benutzers. Sie werden nach dem Namen des Benutzers gefragt, nicht nach seiner UID. Falls Sie keinen Namen angeben werden alle Prozesse angezeigt;

  • i: standardmäßig werden alle Prozesse angezeigt, auch die ruhenden. Mit diesem Befehl lassen Sie nur laufende Prozesse anzeigen (Prozesse, deren Spalte S ein R für Running anzeigt). Bei nochmaliger Eingabe dieses Befehls kehrt die Anzeige wieder zur Gesamtdarstellung zurück.