Die übliche Art, einen Befehl auf einem Linux-Terminal auszuführen, besteht darin, ihn einfach auszuführen und darauf zu warten, dass er ordnungsgemäß beendet wird. Sobald der Befehl beendet ist, können Sie weitere Befehle nacheinander ausführen. Dies wird als Ausführen von Befehlen im Vordergrund bezeichnet. Wie das Wort schon sagt, können Sie die Ausgabe des Befehls auf dem Terminal visuell sehen.
Manchmal kann das Ausführen von Befehlen im Vordergrund jedoch eine Reihe von Herausforderungen darstellen. Das Beenden des Befehls kann zu lange dauern, was dazu führt, dass Sie wertvolle Zeit verschwenden, und manchmal kann er vollständig an die Shell-Sitzung angehängt sein, sodass Sie stecken bleiben.
In solchen Fällen ist es am besten, einen Befehl im Hintergrund auszuführen. Sie können einen oder mehrere Befehle an den Hintergrund senden, während Sie gleichzeitig andere Befehle im Vordergrund ausführen. Dadurch wird die Arbeit am Terminal effizienter und Sie sparen Zeit.
In diesem Handbuch konzentrieren wir uns darauf, wie Sie Linux-Shell-Befehle oder -Skripts im Hintergrund ausführen können.
Shell-Befehl im Hintergrund mit dem Zeichen (&) ausführen
Um einen Befehl oder ein Skript im Hintergrund auszuführen, schließen Sie es wie gezeigt mit einem kaufmännischen Und-Zeichen (&) ab.
$-Befehl &
HINWEIS:Wenn Sie den Befehl mit dem kaufmännischen Und-Zeichen beenden, wird der Befehl nicht von Ihnen getrennt. Es sendet es lediglich an den Hintergrund der aktuellen Shell, die Sie verwenden, der Befehl gibt die Ausgabe immer noch an STDOUT oder STDERR aus, wodurch Sie daran gehindert werden, andere Befehle auf dem Terminal auszuführen.
Ein besserer Ansatz besteht darin, den Befehl nach /dev/null umzuleiten und später das kaufmännische Und-Zeichen wie gezeigt am Ende anzuhängen
$ Befehl &>/dev/null &
Um zu bestätigen, dass der Befehl an den Hintergrund gesendet wurde, führen Sie den Befehl jobs aus.
Um den Hintergrundprozess zu beenden, führen Sie den Befehl kill gefolgt von der PID des Prozesses wie folgt aus. Die Option -9 beendet den Vorgang sofort.
$ kill -9 138314
Shell-Befehl oder Skript im Hintergrund mit dem Befehl nohup ausführen
Eine andere Möglichkeit, einen Befehl im Hintergrund auszuführen, ist die Verwendung des Befehls nohup. Der nohup-Befehl, kurz für no hang up, ist ein Befehl, der einen Prozess auch nach dem Verlassen der Shell am Laufen hält.
Dies geschieht, indem die Prozesse daran gehindert werden, ein SIGHUP-Signal (Signal Hang UP) zu empfangen, das ein Signal ist, das normalerweise an einen Prozess gesendet wird, wenn er das Terminal verlässt.
Um einen Befehl oder ein Skript im Hintergrund zu senden und es am Laufen zu halten, verwenden Sie die Syntax:
$ nohup-Befehl &>/dev/null &
$ nohup shell-script.sh &>/dev/null &
Zum Beispiel
$ nohup ping google.com &>/dev/null &
Auch hier können Sie mit dem folgenden Befehl überprüfen, ob der Befehl im Hintergrund ausgeführt wird:
$ jobs
Schlussfolgerung
In diesem Handbuch haben wir zwei Möglichkeiten zum Ausführen von Befehlen oder Shell-Skripten im Hintergrund behandelt. Wir haben gesehen, wie Sie mit dem &-Zeichen und dem nohup-Befehl Befehle im Hintergrund ausführen können.
Lesen Sie auch :Linux Zip- und Unzip-Befehl mit Beispielen