Wenn Sie ein Kommando abgesetzt haben, wartet die Shell normalerweise,
bis das Kommando ordnungsgemäß beendet wurde, und gibt dann wieder
einen Prompt aus, um auf das nächste Kommando zu warten. Manche
Kommandos können jedoch viel Zeit benötigen oder gar während der
kompletten Arbeitssitzung laufen. Wenn Sie in einer grafischen
Umgebung wie dem X Window-System arbeiten, können Sie von der Shell
aus beliebige Programme starten, was häufig viel komfortabler ist, als
sich per Maus zum gewünschten Programm zu klicken. Damit Sie nicht für
jedes Programm, das Sie starten wollen, eine eigene Shell aufmachen
müssen, können Sie Programme, wie man sagt, im Hintergrund
starten. Das bedeutet nichts anderes als dass die Shell nicht erst auf
die Beendigung des abgesetzten Programmes wartet, sondern sofort
wieder einen Prompt ausgibt, um ggf. ein weiteres Kommando zu
bearbeiten. Die Ausführung eines Kommandos im Hintergrund erreichen
Sie, indem Sie dem Kommando ein "Kaufmannsund" hintenanstellen:
oder auch
Der Sinn der Bezeichnungen Vordergrund und Hintergrund ist unmittelbar
eingängig. In technischer Hinsicht sind Vordergrund und Hintergrund
zwei Begriffe, die sich im Zusammenhang mit der Shell nur auf ein
bestimmtes Terminal beziehen können. Ist die sogenannte
Prozeß-Gruppen-ID eines Prozesses identisch mit der eines Terminals,
so kann der Prozeß von diesem Terminal Signale empfangen. Solche
Prozesse laufen im Vordergrund. Was eine Prozeß-Gruppen-Id ist, werden
wir später noch ausführlich behandeln. Hintergrund-Prozesse sind solche,
deren Prozeß-Gruppen-Id von der des Terminals verschieden sind. Sie
sind daher auch immun gegen irgendwelche Signale, die vom Keyboard
herrühren.
Der Begriff des Jobs ist eine Abstraktion, welche von der Shell zur
Verwaltung eingesetzt wird. Als Job wird jede Pipeline bezeichnet, aus
wievielen Kommandos oder Prozessen auch immer sie bestehen mag. Dem
Job wird von der bash eine Jobnummer zugewiesen, unter welcher er
angesprochen werden kann. Die komplette Liste der in einer Shell
laufenden Jobs können Sie sich mit dem Kommando jobs anzeigen lassen:
user@linux ~$
kommando1 &
[1] 5520
user@linux ~$
kommando2 &
[2] 5521
user@linux ~$
kommando3 &
[3] 5522
user@linux ~$
jobs
[1] Running kommando1 [2]- Running kommando2 & [3]+ Running kommando3 &
|
In den eckigen Klammern erkennen Sie die zugeteilte
Jobnummer. Sie unterscheidet sich von der sogenannten Prozeßnummer,
die Sie hinter der Jobnummer angegeben sehen. Das +-Zeichen bei der
Ausgabe des jobs-Kommandos markiert den zuletzt gestarteten Job, das
--Zeichen den als vorletztes gestarteten Job.
Es gibt eine Reihe von Möglichkeiten, sich auf einen bestimmten Job zu
beziehen. Das Zeichen % leitet einen Jobnamen ein.
Jobnummer n kann als %n angesprochen werden. Man kann sich auch auf einen
Job beziehen, indem man dem % die ersten Buchstaben des Kommandos voranstellt, mit
dem man den Job gestartet hat. Hat man z.B. Kommando
gestartet, kann man sich darauf mittels %ko beziehen, falls kein weiterer
laufender Job so beginnt. Auch eine Art von Wildcard ist erlaubt: %?ommando oder
auch %?mmando bezieht sich ebenfalls auf den Job, der mittels
kommando gestartet wurde. Wenn das angegebene Präfix oder
Muster auf mehr als einen Job paßt, erfolgt eine Fehlermeldung. %%
oder %+ bezieht sich immer auf den letzten Job. In den Begriffen der
Shell ist das der zuletzt gestoppte Vordergrundprozeß oder der zuletzt
gestartete Hintergrundprozeß. %- bezieht sich entsprechend auf den
zuvorletzt gestarteten Job.
|