So führen Sie Bash-Befehle im Hintergrund unter Linux aus

Hintergrundbefehle-Funktion

Es gibt nichts Ärgerlicheres, als einen Befehl in Ihrem Terminal auszuführen, der Minuten, manchmal Stunden dauert, und Sie Ihr Terminal nicht wieder nutzen können. Sicher, Sie können Tabs verwenden, aber das ist eine umständliche Lösung, und es ist nicht immer optimal, da Sie möglicherweise Updates sehen möchten, während Sie arbeiten. Hier zeigen wir Ihnen einige verschiedene Möglichkeiten, Bash-Befehle im Hintergrund unter Linux auszuführen.

Auch lesen: So verwenden Sie den lsof-Befehl in Linux, um geöffnete Dateien aufzulisten

Beenden Sie einen Befehl mit &

Wenn Sie einen Befehl in den Hintergrund schieben möchten, ist es einfach, & am Ende zu verwenden. Auf diese Weise können Sie einen Befehl im Hintergrund ausführen und Ihr Terminal weiterhin nutzen, während es läuft. Es gibt jedoch einen Haken. Die Verwendung von & trennt den Befehl nicht von Ihnen; es schiebt ihn nur in den Hintergrund. Das bedeutet, dass alles, was der Befehl an STDOUT oder STDERR ausgeben möchte, weiterhin gedruckt wird, was ablenkend sein kann.

Screenshot vom 2021 01 14 16 21 23

COMMAND &

Wenn die Terminal-Sitzung geschlossen wird, endet der Befehl. Sie können den Befehl auch beenden, indem Sie den Befehl jobs ausführen, die Nummer des laufenden Befehls finden und ihn mit dem Befehl kill beenden. Diese Syntax lautet wie folgt:

Screenshot vom 2021 01 14 16 21 48

kill %1

Die Verwendung von & ist gut, wenn Sie etwas für eine Weile ablegen möchten, aber nicht erwarten, dass es für immer weiterläuft.

Auch lesen: So verwenden Sie den dd-Befehl in Linux

& nach einem Befehl, dann disown

Einen Befehl nur mit & auszuführen, schiebt ihn nach hinten und hält ihn am Laufen, solange das Terminalfenster geöffnet ist. Wenn Sie jedoch möchten, dass dieser Befehl konstant weiterläuft, selbst wenn Ihre Terminal-Sitzung endet, können Sie den Befehl disown verwenden.

Um diese Methode zu verwenden, beginnen Sie mit der Hinzufügung von &.

COMMAND &

Wie oben erwähnt, schiebt die Verwendung von & diesen Befehl in den Hintergrund, trennt ihn jedoch nicht von Ihrem Benutzer. Sie können dies überprüfen, indem Sie jobs in das Terminal eingeben. Es zeigt den im Hintergrund laufenden Befehl, wie wir zuvor gesehen haben.

Geben Sie einfach disown in die Shell ein, und es wird genau das tun. (Und Sie können dies erneut mit dem Befehl jobs überprüfen.)

Screenshot vom 2021 01 14 16 26 01

Jetzt können Sie Ihr Terminal schließen und Ihren Tag fortsetzen. Es wird weiterhin Dinge an STDOUT oder STDERR weiterleiten, aber sobald Sie Ihr Terminal schließen und erneut öffnen, werden Sie dort nichts sehen. Sie können den Befehl erneut mit den Befehlen top oder ps finden und ihn mit dem Befehl kill beenden.

Screenshot vom 2021 01 14 16 28 42

Auch lesen: So verwenden Sie den Rm-Befehl in Linux

& nach einem Befehl mit /dev/null

Das Hinzufügen von & nach einem Befehl schiebt einen Befehl in den Hintergrund, aber in der Folge wird der Hintergrundbefehl weiterhin Nachrichten in das Terminal drucken, während Sie es verwenden. Wenn Sie dies verhindern möchten, sollten Sie den Befehl an /dev/null umleiten.

Screenshot vom 2021 01 14 16 31 33

COMMAND &>/dev/null &

Dies verhindert nicht, dass der Befehl geschlossen wird, wenn das Terminal geschlossen wird. Wie oben erwähnt, ist es jedoch möglich, disown zu verwenden, um den laufenden Befehl vom Benutzer zu trennen. Sie können ihn auch mit einer der oben genannten Methoden beenden, wenn Sie nicht möchten, dass er weiterläuft.

Auch lesen: Der ultimative Leitfaden zu Apt- und Apt-Get-Befehlen

Nohup, mit & und /dev/null

Im Gegensatz zu den vorherigen Befehlen ermöglicht es Ihnen die Verwendung von nohup, einen Befehl im Hintergrund auszuführen und ihn am Laufen zu halten. Wie? nohup umgeht das HUP-Signal (Signal Hang Up), was es möglich macht, Befehle im Hintergrund auszuführen, selbst wenn das Terminal ausgeschaltet ist. Kombinieren Sie diesen Befehl mit der Umleitung zu “/dev/null” (um zu verhindern, dass nohup eine nohup.out-Datei erstellt), und alles geht mit einem Befehl in den Hintergrund.

nohup COMMAND &>/dev/null &

Screenshot vom 2021 01 14 16 32 43

Auch lesen: So generieren Sie SSL-Zertifikate unter Linux mit OpenSSL

Die meisten Terminalprogramme unter Linux verfügen heute über integrierte Funktionen, die es ihnen ermöglichen, mit wenig Aufwand im Hintergrund zu laufen. Darüber hinaus können moderne Init-Systeme (wie systemd) es Benutzern ermöglichen, Programme wie Dienste beim Booten oder wann immer zu starten.

Dennoch fehlt einigen Programmen unter Linux die Fähigkeit, als Daemon zu laufen oder sich in moderne Init-Systeme zu integrieren. Dies ist eine echte Unannehmlichkeit, aber verständlich, da nicht alle Entwickler die Fähigkeiten oder die Zeit haben, neue Funktionen hinzuzufügen.

Glücklicherweise sind Befehle wie nohup oder disown nach wie vor Realität und können die Lücke schließen, um Programme wie dieses in den Hintergrund zu verschieben. Sie sind nicht perfekt oder schick, aber sie erledigen die Arbeit, wenn es nötig ist.

Wenn Ihnen dieser Linux-Artikel gefallen hat, sollten Sie sich auch einige unserer anderen Linux-Inhalte ansehen, wie z. B. wie Sie Ihr Google-Konto mit GNOME Shell verbinden, die besten Linux-Distributionen für Windows-Benutzer und die LS-Befehle, die Sie kennen müssen.

Auch lesen: So verwenden Sie cURL für die Datenübertragung über die Befehlszeile und mehr