In Linux- und Unix-Systemen wird ein Job als eine Aufgabe definiert, die mit der Ausführung begonnen hat und noch nicht abgeschlossen ist. Jede Aufgabe ist im Grunde genommen ein ausgeführtes Programm, das ein Prozess ist.
Jedem Job wird eine eindeutige ID namens Jobnummer (Job-ID) zugewiesen. Wir können die Jobs ohne Eingriff des Benutzers im Hintergrund ausführen und auch als aktuelle Jobs im Vordergrund ausführen.
In diesem Tutorial lernen wir die fg- und bg-Befehle kennen, um Jobs unter Linux zu verwalten.
bg-Befehl
Die Prozesse, die durch ein Interrupt-Signal gestoppt wurden, können im Hintergrund mit dem Befehl bg fortgesetzt werden.
$ nautilus
^Z
[1]+ Stopped nautilus
Dieser Vorgang wurde mit ctrl+z
gestoppt Signal unterbrechen. Die gestoppten Prozesse können mit dem Befehl jobs überprüft werden. Aber bevor wir das überprüfen, lassen Sie uns einen anderen Job erstellen und ihn mit einem Stoppsignal unterbrechen.
$ jedit
9:22:28 AM [main] [warning] jEdit: inifPLAF failed to set required l&f
9:22:29 AM [main] [warning] jEdit: inifPLAF failed to set required l&f
^Z
[2]+ Stopped jedit
$ jobs
[1]- Stopped nautilus
[2]+ Stopped jedit
Sie können sehen, dass der Status der Jobs gestoppt ist. Das Pluszeichen (+) zeigt den aktuellen Job an. Minuszeichen (-) bezieht sich auf den vorherigen Job. Um den angehaltenen Job nun im Hintergrund auszuführen, verwenden wir den Befehl bg. Wenn kein Argument angegeben wird, führt bg standardmäßig den aktuellen Job im Hintergrund aus.
$ bg
[2]+ jedit &
$ jobs
[1]+ Stopped nautilus
[2]- Running jedit &
Der bg-Befehl kann die Jobnummer als Argument annehmen. Die Auftragsnummer wird in der Ausgabe von Aufträgen in eckigen Klammern angegeben.
Im obigen Beispiel ist die Jobnummer von nautilus 1. Also verwenden wir jetzt diese Jobnummer, um den Job im Hintergrund auszuführen. Der %
Zeichen ist für die Angabe der Auftragsnummer erforderlich.
$ bg %1
[1]+ nautilus &
$ jobs
[1]- Running nautilus &
[2]+ Running jedit &
Der bg-Befehl kann auch über seinen Namen auf einen Job verweisen. Zum Beispiel %String
bezieht sich auf einen Job, dessen Name mit der angegebenen Zeichenfolge und %?String
beginnt verweist auf einen Job, dessen Name die angegebene Zeichenfolge enthält.
Zur Veranschaulichung haben wir zwei angehaltene Jobs.
$ jobs
[1]+ Stopped nautilus
[2]- Stopped jedit
$ bg %nau
[1]+ nautilus &
$ jobs
[1]- Running nautilus &
[2]+ Stopped jedit
$ bg %?ed
[2]+ jedit &
$ jobs
[1]- Running nautilus &
[2]+ Running jedit &
fg-Befehl
Der fg-Befehl ist wie der bg-Befehl, außer dass er einen Befehl nicht im Hintergrund sendet, sondern im Vordergrund ausführt und das aktuelle Terminal belegt und auf das Beenden des Prozesses wartet.
# jobs
[1]- Stopped makewhatis
[2]+ Stopped vi
Ohne Argumente führt fg den aktuellen Job im Vordergrund aus (in diesem Fall vi).
# fg
vi
Da der Befehl im Vordergrund ausgeführt wird, erhalten wir das Terminal nicht zurück, bis der Befehl beendet wird. Der Job-Befehl zeigt jetzt also nur einen Job an, da vi jetzt beendet wird.
# jobs
[1]+ Stopped makewhatis
# fg %1
makewhatis
# jobs
Kein Restjob. Wie bg, %String
und %?String
arbeite auch für fg.
# jobs
[1]- Stopped makewhatis
[2]+ Stopped vi
# fg %v
vi
# fg %?what
makewhatis
Schlussfolgerung
In diesem Tutorial haben wir anhand einiger Beispiele gelernt, wie man Jobs mit den Befehlen fg und bg steuert. Ich hoffe, es hat Ihnen gefallen und bitte hinterlassen Sie Ihre Vorschläge im Kommentarbereich unten.