Copyright © 1995 by O'Reilly/International Thomson Verlag

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches "Linux - Wegweiser zur Installation & Konfiguration", dann klicken Sie hier.


Kapitel 3

Prozesse

UNIX basiert auf dem Konzept von Prozessen. Das Verständnis dieses Konzeptes wird Ihnen als Benutzer bei Ihren Login-Sitzungen helfen. Für den Systemverwalter ist dieses Konzept noch viel wichtiger.

Ein Prozeß ist ein unabhängig laufendes Programm, das seine eigenen Ressourcen verwaltet. Ein Beispiel: Wir haben in einem Abschnitt weiter oben gezeigt, wie Sie die Ausgaben eines Programms in eine Datei umleiten können, während die Shell weiterhin Meldungen auf Ihren Bildschirm bringt. Die Shell und das andere Programm können ihre Ausgaben zu verschiedenen Zielen lenken, weil es eigenständige Prozesse sind.

Unter UNIX werden die »endlichen« Systemressourcen, etwa der Arbeitsspeicher und die Festplatten, von einem wahrhaft allmächtigen Programm verwaltet -- dem Kernel. Alles andere erledigen Prozesse.

Wir haben bereits erwähnt, daß Ihr Terminal vor dem Einloggen von einem getty -Prozeß überwacht wird. Nach dem Einloggen stirbt dieser Prozeß (der Kernel startet einen neuen getty , wenn Sie ausloggen) und Ihr Terminal wird von der Shell gesteuert, einem weiteren Prozeß. Mit jedem Befehl, den Sie eingeben, startet die Shell wiederum einen neuen Prozeß. Diesen Vorgang nennt man forking (etwa: Verzweigung), weil aus einem Prozeß zwei entstehen.

Wenn Sie mit dem X Window System arbeiten, öffnet jeder Prozeß ein oder mehrere Fenster. Das Fenster, in dem Sie Ihre Befehle eingeben, wird also von einem xterm -Prozeß verwaltet. Dieser Prozeß zweigt in eine Shell ab, die in diesem Fenster läuft. Diese Shell wiederum zweigt für jeden Ihrer Befehle weitere Prozesse ab.

Mit dem Befehl ps lassen sich die Prozesse anzeigen, die derzeit aktiv sind. Abbildung 3--4. zeigt eine typische Ausgabe dieses Befehls sowie die Bedeutung der einzelnen Felder. Sie werden überrascht sein, wie viele Prozesse laufen; insbesondere, wenn Sie unter X arbeiten. Einer der Prozesse ist natürlich der Befehl ps selbst, der aber sofort nach der Anzeige der Daten stirbt.

Abbildung 3-4. Die Ausgaben des Befehls ps

Das erste Feld in der Ausgabe von ps zeigt die eindeutige ID-Nummer der Prozesse. Falls ein Prozeß einmal aus der Rolle gerät und sich mit CTRL-C oder anderen Mitteln nicht mehr abbrechen läßt, können Sie ihn von einer anderen Konsole aus oder in einem anderen X-Fenster mit diesem Befehl loswerden:

$ kill   prozeß-id

Das Feld TTY zeigt, auf welchem Terminal der Prozeß läuft, wenn überhaupt. (Alles, was ich in meiner Shell starte, läuft natürlich auf meinem Terminal, aber die Dämonen im Hintergrund benutzen kein Terminal.)

Das Feld STAT zeigt den Status der Prozesse an. Die Shell ist derzeit angehalten (suspended), deshalb steht hier ein S). Die laufende Emacs-Sitzung wurde mit CTRL-Z unterbrochen (temporary suspension) -- das T im Feld STAT zeigt dies an. Der letzte Prozeß in der Liste ist ps , das diese Anzeige erzeugt hat. Der Status ist natürlich R (running), weil dieser Prozeß gerade arbeitet.

Das Feld TIME zeigt die CPU-Zeit an, die die Prozesse bereits verbraucht haben. Da sowohl bash als auch Emacs interaktiv arbeiten, beanspruchen sie die CPU nur in geringem Maße.

Sie müssen sich nicht auf die Anzeige der eigenen Prozesse beschränken. Lassen Sie uns mit der Option -a einen Blick auf »alle Prozesse« werfen und mit der Option -x auch die Prozesse ohne Terminal anzeigen (etwa die Dämonen, die beim Booten gestartet werden):

$ ps -ax | more
Jetzt sehen Sie auch die Dämonen, die wir im vorhergehenden Abschnitt erwähnt haben. Und hier, mit diesem atemberaubenden Ausblick auf ein komplettes UNIX-System bei der Arbeit, wollen wir dieses Kapitel beenden.


Inhaltsverzeichnis Vorherige Abschnitt Nächstes Kapitel