Einen Befehl im Hintergrund ausführen lassen
Aus Howtos und Gedankenstuetzen
Einen Befehl im Hintergrund ausführen
Als es das X Window System noch nicht gab, das das gleichzeitige Starten mehrerer Programme vereinfacht, haben Benutzer die Multitasking-Fähigkeiten von Unix genutzt, indem sie einfach ein Kaufmanns-Und (&) an das Ende eines Befehls anhängten.
$ gcc invinitjig.c &
[1] 21457
Das Kaufmanns-Und verlagert den Befehl in den Hintergrund. Das bedeutet, daß der Shell-Prompt wieder auf dem Bildschirm erscheint, so daß Sie andere Befehle ausführen lassen können, während mit gcc Ihr Programm kompiliert wird. Die [1] ist die Jobnummer, die diesem Befehl zugeordnet wurde. Die 21457 ist die Prozeß-ID, auf die wir weiter unten noch eingehen werden. Die Jobnummern für Hintergrundjobs werden der Reihe nach vergeben und sind deshalb einfacher zu behalten als die Prozeß-IDs.
Selbstverständlich fordert das Multitasking seinen Preis in Form von Systemressourcen. Je mehr Befehle Sie im Hintergrund abarbeiten lassen, desto langsamer wird das System durch die gleichzeitige Ausführung der Tasks.
Sie sollten keinen Job in den Hintergrund verlagern, der Eingaben von seiten des Benutzers verlangt. Der Versuch resultiert in einer Fehlermeldung wie:
Stopped (tty input)
Dieses Problem können Sie lösen, indem Sie den Job mit dem Befehl fg wieder in den Vordergrund holen. Bei mehreren Hintergrund-Tasks wählen Sie anhand der Jobnummer oder der Prozeß-ID den richtigen Job aus. Für unseren langlebigen gcc-Job können wir folgende Befehle absetzen:
$ fg %1 $ fg 21457
Vergessen Sie das Prozentzeichen vor der Jobnummer nicht; dadurch unterscheiden sich Jobnummern von Prozeß-IDs.
Mit dem Befehl kill lassen sich Hintergrundjobs entfernen:
$ kill %1