Jobs im Griff mit jobs, bg, fg und &

Aus EasyLinux 03/2009

Jobs im Griff mit jobs, bg, fg und &

Jobkontrolle

Jedes laufende Programm ist aus Linux-Sicht ein eigener Prozess. Neben dem Prozesskonzept gibt es aber noch den Begriff “Job”: Den vergibt die Shell an Prozesse, die Sie aus ihr heraus starten. Und die können Sie mit Shell-eigenen Befehlen beeinflussen.

Über die Prozessverwaltung mit Kommandozeilentools wie ps, top und kill haben wir bereits vor kurzem geschrieben [1], in diesem Artikel geht es daher nicht allgemein um Prozesse, sondern um “Jobs”: So nennt die Shell alle Prozesse, die Sie durch Befehlseingaben aus ihr heraus starten. Arbeiten Sie parallel in mehreren Shells, sind die Jobs der Shells voneinander getrennt.

Eine Übersicht aller zur Shell gehörenden Jobs erhalten Sie mit dem Kommando jobs:

$ jobs
[2]-  Running   LANG=de_DE xchat &
[3]+  Running   nedit artikel.txt &

Haben Sie aus einer Shell heraus noch keine weiteren Programme gestartet (oder diese alle bereits beendet), ist die Liste leer: Es gibt dann keine Jobs.

Hinten und vorn

Was bringt das Job-Konzept nun für Vorteile? Einer der interessantesten Punkte ist die Möglichkeit, Jobs in den Vordergrund oder in den Hintergrund zu schieben. Ein Programm, das (aus Sicht der Shell) im Vordergrund läuft, blockiert diese Shell: Sie können dort dann keine weiteren Befehle eingeben. Der Begriff kommt aus der Zeit, als es noch keine grafischen Oberflächen gab. Damals waren Vordergrundprogramme eben normale Anwendungen mit Ein- und Ausgaben, die den Bildschirm benutzten – und damit keinen Platz mehr für die Shell ließen. Im Gegensatz dazu waren Hintergrundprogramme solche, die meist ohne Interaktion abliefen, also weder auf Tastatureingaben warteten noch Meldungen im Terminal ausgaben. Unter Linux ist damit heute einfach ein Programm gemeint, das die Shell nicht blockiert.

Schon beim Start eines Programms legen Sie fest, ob es im Vordergrund oder im Hintergrund laufen soll:

  • Wenn Sie einfach den Programmnamen eingeben, startet das Programm, und die Shell wartet ab, bis Sie es beenden – erst danach erscheint wieder die Eingabeaufforderung. Das ist ein Vordergrundprozess.
  • Setzen Sie hingegen ein kaufmännisches Und-Zeichen (&) hinter den Befehl, starten Sie das Programm im Hintergrund, und es erscheint sofort wieder der Prompt.

Diese Festlegung beim Progammstart ist aber nicht verbindlich; Sie können jederzeit ein Programm aus dem Hintergrund in der Vordergrund oder in anderer Richtung verschieben.

Verschieben

Wollen Sie ein im Vordergrund laufendes Programm in den Hintergrund schieben, unterbrechen Sie es zunächst mit [Strg]+[Z] – Sie sehen dann wieder den Shell-Prompt und einen Hinweis darauf, welchen Job Sie unterbrochen haben. Er hat die Form

[1]+  Stopped   nedit artikel.txt

Die vorne stehende Nummer ist die Job-ID, und die benötigen Sie, um den Job nun im Hintergrund weiterlaufen zu lassen. Dazu geben Sie bg %1 ein, wobei Sie die Zahl 1 hinter dem Prozentzeichen durch die angezeigte Job-ID ersetzen. Die Shell quittiert auch das Verschiebemanöver mit einer Meldung:

[1]+ nedit artikel.txt &

und der Job arbeitet weiter. Der Befehl bg ist ein Kürzel für Background (Hintergrund).

Um einen Job aus dem Hinter- in den Vordergrund zu holen, zeigen Sie zunächst mit jobs die Jobliste an, finden darüber heraus, welche Job-ID das Programm hat, und geben dann fg %1 ein – wieder mit der richtigen Job-ID anstelle der Eins. fg steht für Foreground (Vordergrund). Nach Eingabe des Befehls erscheint kein neuer Shell-Prompt, weil die Shell jetzt wieder blockiert ist: durch den gerade nach vorne geholten Job.

Nicht alle Prozesse können Sie in den Hintergrund schieben – Programme, die Eingaben über das Terminal erwarten, kommen damit nicht klar. Wenn Sie ein solches Programm unterbrechen und mit bg bearbeiten, hält es gleich wieder an, bleibt also im Zustand “unterbrochen” (Abbildung 1).

Abbildung 1: Der Editor "vi" ist ein Beispiel für Programme, die nicht im Hintergrund laufen können.

Abbildung 1: Der Editor "vi" ist ein Beispiel für Programme, die nicht im Hintergrund laufen können.

Infos

[1] Hans-Georg Eßer: “Prozesse im Griff”, EasyLinux 04/2008, S. 122 ff., http://www.easylinux.de/2008/04/122-guru/

EasyLinux 03/2009 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben