|
|
Hintergrundbearbeitung und Reihenfolge
Wenn man & an ein Kommando anhängt, wartet die Shell nicht auf auf das Ende
des Programms, sondern lässt es im Hintergrund arbeiten. Dabei wird an der
Konsole noch die Prozess-ID angezeigt, unter der der Prozess gestartet wurde.
Im Beispiel unten wird das Programm
gaston> xman & [2] 3717 gaston> ... gaston> [2]+ Done xman gaston>
Man kann den Prozess betrachten, indem man den Befehl Wenn man mehrere Befehle hintereinander in einer Kommandozeile angeben will, verwendet man als Trenner das Semikolon. Die folgende Eingabe zeigt also erst die Dateien an und dann das Datum:
ls; date Durch Anhängen eines & werden die beiden Prozesse nacheinander im Hintergrund ausgeführt. Das zweite Programm wartet also mit seinem Start, bis das erste Programm fertig ist. Sollen die Programme parallel laufen, schickt man beide einzeln in den Hintergrund:
gaston> ls & gaston> date & Beim Starten der Prozesse im Hintergrund kann man beobachten, dass beide Programme ihre Ausgabe direkt auf den Bildschirm schreiben, von dem sie gestartet wurden. Da man im Allgemeinen Prozesse im Hintergrund nicht am Bildschirm beobachten will, sollte man die Ausgabe in eine Datei umleiten. Sollen zwei Programme nacheinander ausgeführt werden, tut man dies normalerweise, weil ein Programm auf den Ergebnissen eines anderen aufbaut. In solchen Fällen ist es aber sinnlos, das zweite Programm auszuführen, wenn bereits das erste scheiterte. Auch hierfür gibt es eine Lösung. Programme unter UNIX geben ihren Erfolgsstatus an die Shell in Form einer Fehlernummer zurück. Ist diese 0, ist alles in Ordnung. Durch ein doppeltes kaufmännisches Und, also &&, wird das zweite Programm nur gestartet, wenn das erste Programm 0 zurückgab:
programm1 && programm2 Auch das Gegenteil ist möglich: Durch die Verwendung zweier senkrechter Striche wird programm2 nur ausgeführt, wenn programm1 scheiterte:
programm1 || programm2 Durch Klammern eingeschlossene Kommandos werden in einer eigenen Subshell gestartet. Auf diese Weise lassen sich Kommandos bündeln. Da die Shell die Rückmeldung der zuletzt gestarteten Programme an den Aufrufer weiterleitet, kann man auch in den logischen Abfolgen klammern. Tabelle zeigt, wie mehrere Programme gestartet werden können.
[Start mehrerer Programme]L|L
Syntax & Ausführung
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|