Wenn Sie ein Unix-Shell-Skript oder einen Befehl ausführen, der lange dauert, können Sie ihn als Hintergrundjob ausführen.
In diesem Artikel sehen wir uns an, wie Sie einen Job im Hintergrund ausführen, einen Job in den Vordergrund bringen, alle Hintergrundjobs anzeigen und einen Hintergrundjob beenden.
1. Ausführen eines Hintergrundjobs
Durch Anhängen eines kaufmännischen Und (&) an den Befehl wird der Job im Hintergrund ausgeführt.
Wenn Sie beispielsweise einen Suchbefehl ausführen, dessen Ausführung viel Zeit in Anspruch nehmen kann, können Sie ihn wie unten gezeigt in den Hintergrund stellen. Das folgende Beispiel findet alle Dateien im Root-Dateisystem, die sich in den letzten 24 Stunden geändert haben.
# find / -ctime -1 > /tmp/changed-file-list.txt &
2. Senden des aktuellen Vordergrund-Jobs an den Hintergrund mit STRG-Z und bg-Befehl
Sie können einen bereits laufenden Vordergrundjob wie unten beschrieben in den Hintergrund schicken:
- Drücken Sie „STRG+Z“, wodurch der aktuelle Vordergrundjob angehalten wird.
- Führen Sie bg aus, damit dieser Befehl im Hintergrund ausgeführt wird.
Wenn Sie beispielsweise vergessen haben, einen Job im Hintergrund auszuführen, müssen Sie den aktuellen Job nicht beenden und einen neuen Hintergrundjob starten. Unterbrechen Sie stattdessen den aktuellen Job und versetzen Sie ihn wie unten gezeigt in den Hintergrund.
# find / -ctime -1 > /tmp/changed-file-list.txt # [CTRL-Z] [2]+ Stopped find / -ctime -1 > /tmp/changed-file-list.txt # bg
3. Zeigen Sie alle Hintergrundjobs mit dem Jobs-Befehl an
Mit dem Befehl jobs können Sie sich die Hintergrundjobs anzeigen lassen . Beispielausgabe des Befehls jobs ist
# jobs [1] Running bash download-file.sh & [2]- Running evolution & [3]+ Done nautilus .
4. Einen Job mit dem fg-Befehl vom Hintergrund in den Vordergrund bringen
Sie können einen Hintergrundjob mit dem fg-Befehl in den Vordergrund bringen . Wenn es ohne Argumente ausgeführt wird, bringt es den letzten Hintergrundjob in den Vordergrund.
# fg
Wenn Sie mehrere Bodenjobs im Hintergrund haben und einen bestimmten Job in den Vordergrund bringen möchten, führen Sie den Befehl jobs aus, der die Job-ID und den Befehl anzeigt.
Im folgenden Beispiel bringt fg %1 den Job#1 (d.h. download-file.sh) in den Vordergrund.
# jobs [1] Running bash download-file.sh & [2]- Running evolution & [3]+ Done nautilus . # fg %1
5. Beenden Sie einen bestimmten Hintergrundjob mit kill %
Wenn Sie eine bestimmte Verwendung eines Hintergrundjobs beenden möchten, beenden Sie %job-number. Um beispielsweise den Job zu beenden, verwenden Sie 2
# kill %2
Um einen Vordergrund-Job zu beenden, verwenden Sie eine der Methoden, die in unserem früheren Artikel 4 Wege zum Beenden eines Prozesses angegeben sind – kill, killall, pkill, xkill.