next up previous contents index
Next: Listen Up: bash Previous: Pipelines

Hintergrundprozesse

      

Nachdem die Kommandozeile von der Shell bearbeitet ist, werden die darin enthaltenen Kommandos ausgeführt. Ein Kommando oder eine Pipeline wird dann zu einem Job. Dieser Job läuft weitgehend unabhängig von der Shell; trotzdem steht die Shell weiterhin mit allen Jobs in Verbindung und kann über Signale mit ihnen kommunizieren. Zu diesem Zweck unterhält die bash eine Tabelle aller aktuellen Jobs.

Wenn ein Job mit dem ` &'-Zeichen im Hintergrund gestartet wird, gibt die bash eine Zeile mit der Jobnummer und der Prozeßnummer für diesen Job aus. Wenn ein Hintergrundjob beendet ist, wird wieder eine Meldung mit dem Namen, der Jobnummer und dem Status des Jobs ausgegeben.

Mit der Tastenkombination ^Z ist es jederzeit möglich, einen im     Vordergrund laufenden Job anzuhalten. Es erscheint dann eine Meldung mit der Jobnummer und dem Namen des angehaltenen Jobs. Danach erscheint die Eingabeaufforderung der Shell.

Ein angehaltener Job kann mit dem bg- oder dem fg- Shellkommando im Hintergrund oder im Vordergrund gestartet werden. Mit dem kill-Kommando wird er abgebrochen (-> Seiten gif, gif und gif).

Im Zusammenhang mit den genannten Kommandos kann ein Job mit seiner Jobspezifikation und seiner Prozeßnummer angesprochen werden.

Als Jobspezifikation werden die Jobnummer oder der Anfang des Jobnamens erkannt,  indem sie durch ein Prozentzeichen ` %' eingeleitet werden. Die Jobnummer ist die laufende Nummer, unter der der Job in der Jobtabelle geführt wird. Der zuletzt angehaltene Job wird auch als aktueller Job bezeichnet und kann mit ` %+' angesprochen werden. Der zuvorletzt angehaltene Job wird auch als der letzte Job bezeichnet und kann mit ` %-' benannt werden. Wenn ein angegebener Anfang auf mehrere Jobs paßt, wird eine Fehlermeldung ausgegeben. Ein Job kann auch einfach durch Angabe seiner Jobspezifikation (ohne Kommando) aus dem Hintergrund in den Vordergrund geholt werden. Zum Beispiel bringt ` fg %1' den angehaltenen oder im Hintergrund laufenden Prozeß mit der Jobnummer 1 im Vordergrund zum Laufen.

Bei der Ausgabe der Jobtabelleneinträge wird der aktuelle Job mit einem `+' gekennzeichnet und der letzte Job mit einem `-'.

Wenn die Shell beendet werden soll, während sich angehaltene Jobs im Hintergrund befinden, wird eine Warnung ausgegeben und die Shell nicht beendet. Erst wenn die Shell entweder unmittelbar darauf, oder nach einem einzigen jobs-Shellkommando ein zweites Mal beendet wird, werden alle verbleibenden Jobs automatisch terminiert.

Wenn zum Zeitpunkt des Ausloggens noch Jobs im Hintergrund laufen, werden diese Jobs beim Verlassen der Shell automatisch an den init-Prozeß übereignet und laufen so weiter.

 



next up previous contents index
Next: Listen Up: bash Previous: Pipelines



Linux Anwenderhandbuch -- Copyright 1993, 1994, 1995 S. Hetze, D. Hohndel, O. Kirch, M. Müller