GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So führen Sie einen Linux-Shell-Befehl / ein Skript im Hintergrund aus

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


Linux
  1. So erstellen Sie ein Skript eines Linux-Befehls

  2. So führen Sie Python-Skripte von der Shell aus

  3. So verwenden Sie Shell-Aliase unter Linux

  4. Wie führen Sie ein Skript beim Anmelden in * nix aus?

  5. So bereinigen Sie die Ausgabe des Linux-Befehls „script“.

So speichern Sie einen Linux-Befehl als Variable im Shell-Skript

So führen Sie einen Befehl regelmäßig unter Linux mit Watch aus

So verwenden Sie den Declare-Befehl in der Linux Bash Shell

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

Wie führe ich einen Befehl in einem Shell-Skript aus?

So erstellen und führen Sie ein Shell-Skript in Ubuntu 22.04 aus