Damit Sie die Multitaskingfähigkeit von Linux auch als einzelner Benutzer ausschöpfen können, bietet Linux verschiedene Möglichkeiten, mehrere Programme nebeneinander laufen zu lassen.
Die erste dieser Möglichkeiten wird durch die sogenannten virtuellen
Terminals realisiert. Obwohl Sie nur eine
einzige Bildschirm- Tastaturkombination, die sogenannte Console, an
Ihrem PC angeschlossen haben, können Sie mit Linux arbeiten als säßen
Sie an mehreren Rechnern gleichzeitig. Die reale Console wird durch
Linux zu 8 logischen Terminals, zwischen denen durch die
Tastenkombination ALT-F1 bis ALT-F8 umgeschaltet werden
kann. Auf jedem dieser virtuellen Terminals wird ein eigener
Loginprompt ausgegeben. Damit erhalten Sie die Möglichkeit, sich gleichzeitig
mehrfach einzuloggen, eventuell sogar unter verschiedenen
Benutzernamen (wenn Ihnen mehrere Accounts auf dem Rechner gehören).
Auf jedem virtuellen Terminal können Programme gestartet werden, die auch weiterlaufen, wenn auf ein anderes Terminal umgeschaltet wird. Die Tastatureingabe wird immer nur an das aktuelle Terminal weitergegeben. Die Bildschirmausgabe der einzelnen Terminals wird erst sichtbar, wenn dorthin umgeschaltet wurde. Nur die Statusmeldungen und Fehlerausgaben des Kernels werden nicht auf ein virtuelles Terminal, sondern auf die Console direkt ausgegeben und erscheinen dadurch immer auf dem Bildschirm.
Die zweite Möglichkeit, die Multitaskingfähigkeit von Linux zu nutzen, besteht darin, Prozesse auf einem Terminal in der aktuellen Shell im Hintergrund zu starten. Das geschieht, indem Sie am Ende des Kommandos ein Ampersand ` &' eingeben. So ein Kommando wird ganz normal gestartet, die Shell wartet aber nicht auf dessen Beendigung, sondern gibt sofort wieder den Prompt aus und wartet auf Ihre nächste Eingabe. Je nachdem, wie das Terminal eingestellt ist (-> stty), erscheinen die Meldungen des Hintergrundprogramms auf dem Bildschirm, oder das Hintergrundprogramm wird für die Ausgabe angehalten, bis es wieder in den Vordergrund geholt wird. Durch Umleitung des Standardausgabekanals in eine Datei kann die Ausgabe eines Hintergrundprogramms auch für spätere Bearbeitung gespeichert werden.
$ sort Adressen | uniq > Adressliste & [1] 19365 $ _bearbeitet beispielsweise die Adreßdatei wie im Beispiel oben, schreibt die sortierte Liste aber in eine Datei, anstatt sie auf dem Bildschirm auszugeben. Die Zahlen werden von der Shell ausgegeben und teilen Ihnen erstens die Jobnummer und zweitens die Prozeßnummer des gerade im Hintergrund gestarteten Prozesses mit.
Es gibt noch eine dritte Möglichkeit, Prozesse in den Hintergrund zu bringen. Mit der Tastenkombination CONTROL-Z können Sie ein im Vordergrund laufendes Programm anhalten. Die Shell zeigt wie oben die Job- und die Prozeßnummer an und gibt schließlich wieder eine Eingabeaufforderung aus. Mit den sogenannten Jobcontrol Funktionen der Shell können Sie ein angehaltenes Kommando im Hintergrund oder im Vordergrund weiterlaufen lassen.
Wenn beispielsweise die laufende sort Pipeline mit CONTROL-Z angehalten wird, kann sie mit dem bg-Kommando im Hintergrund (background) fortgesetzt werden...
$ sort Adressen | uniq >Adressliste [1]+ Stopped sort Adressen | uniq >Adressliste $ bg %1 [1]+ sort Adressen | uniq >Adressliste & $ _
das fg-Kommando setzt den gleichen Job im Vordergrund fort (foreground). Eine genaue Beschreibung dieser Funktionen ist hier zu finden.
$ fg %1 sort Adressen | uniq >Adressliste $ _