Die Shell erledigt auf eine sehr interessante Art und Weise auch das Jobmanagement. Dabei handelt es sich um die Frage von Vorder- und Hintergrundprozessen. Wenn ein Kommando auf der Shell eingegeben wird, so führt die Shell das Kommando aus und kehrt erst nach dem Abschluß des Kommandos wieder zur Eingabeaufforderung zurück. Das ist das, was ein Vordergrundprozeß genannt wird. Das Programm läuft „im Vordergrund“, die Eingabeaufforderung ist gesperrt, bis das Programm wieder beendet ist.

Programme können aber auch so gestartet werden, dass sie „im Hintergrund“ laufen, die Eingabeaufforderung also sofort nach dem Aufruf des Programms wieder zur Verfügung steht, auch während das Programm noch läuft. Das macht natürlich nur dann einen Sinn, wenn das Hintergrundprogramm keine Ausgaben auf dem Bildschirm macht, sonst kann hier so einiges durcheinander kommen… Also etweder handelt es sich um ein Programm, das keine Ausgaben auf der Konsole macht, oder die Ausgaben werden in eine Datei umgeleitet.

Ein Programm wird einfach dadurch im Hintergrund gestartet, indem dem Programmaufruf bzw. der ganzen Kommandozeile ein Ampersand (&) angehängt wird.

Programm &

startet also das Programm im Hintergrund.

Das Programm bekommt dabei eine sogenannte Jobnummer. Sie wird nach dem Programmaufruf in eckigen Klammern dargestellt. Wichtig ist es, diese Jobnummer von der ProzeßID zu unterscheiden. Die ProzeßID ist global gültig, die Jobnummer ist nur aus der Sicht der ausführenden Shell gültig. Die Jobnummer wird später dazu verwendet, zwischen verschiedenen Hintergrundprozessen hin- und herzuschalten. Eine Liste aller gerade laufenden Jobs bekommen Sie mit dem Befehl

jobs

Um einen bestimmten Hintergrundjob wieder in den Vordergrund zu holen gibt es das Kommando fg dem als Parameter die Jobnummer des Jobs mitgegeben wird, der in den Vordergrund geholt werden soll.

fg 2

holt also den Job mit der Jobnummer 2 wieder in den Vordergrund.

Schließlich gibt es auch die Möglichkeit, einen bereits laufenden Vordergrundprozeß in den Hintergrund zu schieben. Dazu muß er zunächst angehalten werden. Ein Vordergrundprozeß wird mit dem Befehl Strg-z angehalten. Damit wird er sozusagen eingefroren. Er befindet sich zwar noch im Arbeitsspeicher, bekommt aber keine Rechenzeit mehr zugewiesen. Mit dem Befehl bg, gefolgt von der Jobnummer kann dieser angehaltene Job jetzt im Hintergrund wieder gestartet werden.

ProgrammDas Programm wird im Vordergrund gestartet.
Strg-zDas Programm wird angehalten
bgDas Programm wird in den Hintergrund geschoben und erhält wieder Rechenzeit.

Schreibe einen Kommentar