Linux / Befehl bg: Einen Shell-Job im Hintergrund fortsetzen

bg setzt einen angehaltenen Job im Hintergrund in Bash fort. Es wird verwendet, wenn Sie einen laufenden Befehl mit Ctrl+Z anhalten und weiterhin das Terminal nutzen möchten.

bg sendet ein Fortsetzungssignal an einen angehaltenen Job, gibt jedoch die Vordergrundkontrolle des Terminals nicht zurück. Sie können die Jobnummer mit jobs überprüfen und sie wie %1 angeben. Interaktive Programme, die auf Eingaben warten, können im Hintergrund erneut anhalten.

Grundlegende Syntax

bg [%job number]

Die installierte Implementierung und die Optionen können je nach Distribution variieren. Überprüfen Sie die Beschreibung für Ihr System mit help bg.

Beispiele

Angehaltene Jobs überprüfen

Nachdem Sie Ctrl+Z während der Ausführung eines Vordergrundbefehls gedrückt haben, überprüfen Sie den Status.

jobs -s

Wiederaufnahme eines bestimmten Jobs im Hintergrund

Ersetzen Sie im Beispiel %1 durch die tatsächliche Zahl aus der Ausgabe von jobs.

bg %1

Überprüfen des Wiederaufnahme-Ergebnisses

Überprüfen Sie, ob es sich im Status "Running" befindet.

jobs -l

Ausführen eines pausierten Jobs im Hintergrund

bg setzt einen Job fort, der derzeit im Hintergrund der aktuellen Shell pausiert ist. Zum Beispiel: Nach dem Ausführen von sleep 60 und dem Anhalten mit Ctrl+Z überprüfen Sie die Jobnummer.

jobs
bg %1
jobs

Beispiel für Zustandsänderungen:

[1]+  Stopped  sleep 60
[1]+  Running  sleep 60 &

%1 bezieht sich auf die Jobnummer 1 in der aktuellen Shell, nicht auf die PID. Wenn die Shell keine Jobsteuerung unterstützt oder keine pausierten Jobs vorhanden sind, wird bg fehlschlagen. Wenn ein Job beendet ist, kann er aus jobs verschwinden, prüfen Sie daher den Status erneut.

Hauptoptionen und Format

Optionen/Format Beschreibung
%N Geben Sie die Jobnummer N der aktuellen Shell an.
%+ Geben Sie den aktuellen Job an.
%- Geben Sie den vorherigen Job an.
Ohne Argument Verwenden Sie den Job, den Bash als aktuellen Job betrachtet.

Vorsichtsmaßnahmen bei der Verwendung

Ein mit Ctrl+Z gestoppter Job läuft noch nicht. Ein Job, der versucht, von der Standard-Eingabe zu lesen, kann erneut gestoppt werden, selbst wenn er mit bg fortgesetzt wird. bg ist eine Shell-Jobsteuerungsfunktion und kann nicht auf Prozesse angewendet werden, die in einem anderen Terminal gestartet wurden.

Häufig gestellte Fragen

Ist es dasselbe, & am Ende eines Befehls anzuhängen und bg zu verwenden?

& startet den Befehl von Anfang an im Hintergrund, während bg einen derzeit gestoppten Job in der Shell im Hintergrund fortsetzt.

Offizielle Dokumentation

Das genaue Verhalten dieser Optionen und Unterschiede in der Implementierung sind in der offiziellen bg-Dokumentation zu finden.