Bash-Befehle im Hintergrund richtig ausführen

Es gibt nichts ärgerlicheres, als einen Befehl in Ihrem Terminal auszuführen und ihn Minuten, manchmal Stunden lang ausführen zu lassen und Ihr Terminal nicht wieder verwenden zu können. Natürlich können Sie Registerkarten verwenden, aber das ist eine klobige Lösung, die nicht immer optimal ist, da Sie möglicherweise Updates während der Arbeit sehen möchten. Hier zeigen wir Ihnen einige verschiedene Möglichkeiten, um Bash-Befehle im Hintergrund unter Linux auszuführen.

Beenden Sie einen Befehl mit &

Wenn Sie einen Befehl in den Hintergrund stellen möchten, ist die Verwendung von & am Ende eine einfache Möglichkeit, dies zu tun. Auf diese Weise können Sie im Hintergrund einen Befehl ausgeben und Ihr Terminal während der Ausführung weiter verwenden. Es kommt jedoch mit einem Haken. Wenn Sie & verwenden, wird der Befehl nicht von Ihnen getrennt. es schiebt es einfach in den Hintergrund. Dies bedeutet, dass während Sie versuchen, das Terminal zu verwenden, alles, was der Befehl an STDOUT oder STDERR senden möchte, weiterhin gedruckt wird, was möglicherweise ablenkt.

Screenshot von 2021 01 14 16 21 23

Wenn die Terminalsitzung geschlossen ist, wird der Befehl beendet. Sie können den Befehl auch beenden, indem Sie den Befehl jobs ausgeben, die Nummer des ausgeführten Befehls ermitteln und ihn mit dem Befehl kill beenden. Diese Syntax lautet wie folgt:

Screenshot von 2021 01 14 16 21 48

Die Verwendung von & ist gut, wenn Sie etwas abschieben müssen, aber nicht erwarten, dass es für immer weitergeht.

& Nach einem Befehl, dann ablehnen

Wenn Sie einen Befehl mit just & ausführen, wird er nach hinten verschoben und so lange ausgeführt, wie das Terminalfenster geöffnet ist. Wenn Sie diesen Befehl jedoch auch nach Beendigung Ihrer Terminalsitzung konstant halten möchten, können Sie den Befehl disown verwenden.

Um diese Methode zu verwenden, fügen Sie zunächst ein & hinzu.

Wie oben erwähnt, wird dieser Befehl mit & in den Hintergrund gedrängt, aber nicht von Ihrem Benutzer getrennt. Sie können dies überprüfen, indem Sie Jobs in das Terminal eingeben. Es zeigt den Befehl im Hintergrund, wie wir zuvor gesehen haben.

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

Screenshot von 2021 01 14 16 26 01Sie können dort einfach den Befehl disown erkennen

Jetzt können Sie Ihr Terminal schließen und Ihren Tag fortsetzen. Es werden weiterhin Dinge an STDOUT oder STDERR weitergeleitet, aber sobald Sie das Terminal verlassen und wieder öffnen, werden Sie dort nichts mehr sehen. Sie können den Befehl mit den Befehlen top oder ps wiederfinden und mit dem Befehl kill beenden.

Screenshot von 2021 01 14 16 28 42Der abgelehnte Job ist der zweite mit der PID 16238.

& Nach einem Befehl mit / dev / null

Durch Hinzufügen von & nach einem Befehl wird ein Befehl in den Hintergrund verschoben. Infolgedessen druckt der Hintergrundbefehl weiterhin Nachrichten in das Terminal, während Sie ihn verwenden. Wenn Sie dies verhindern möchten, sollten Sie den Befehl nach / dev / null umleiten.

Screenshot von 2021 01 14 16 31 33

Dies verhindert nicht, dass der Befehl geschlossen wird, wenn das Terminal geschlossen wird. Wie oben erwähnt, ist es jedoch möglich, mit disown den laufenden Befehl vom Benutzer fernzuhalten. Sie können es auch mit einer der oben genannten Methoden beenden, wenn Sie nicht mehr möchten, dass es ausgeführt wird.

Nohup, mit & und / dev / null

Im Gegensatz zu den vorherigen Befehlen können Sie mit nohup einen Befehl im Hintergrund ausführen und weiter ausführen. Wie? nohup umgeht das HUP-Signal (Signal legt auf) und ermöglicht es, Befehle im Hintergrund auszuführen, auch wenn das Terminal ausgeschaltet ist. Kombinieren Sie diesen Befehl mit der Umleitung nach “/ dev / null” (um zu verhindern, dass nohup eine nohup.out-Datei erstellt), und alles tritt mit einem Befehl in den Hintergrund.

nohup BEFEHL &> / dev / null &

Screenshot von 2021 01 14 16 32 43

Die meisten Terminalprogramme unter Linux verfügen heute über integrierte Funktionen, mit denen sie mit geringem Aufwand im Hintergrund ausgeführt werden können. Darüber hinaus können Benutzer mit modernen Init-Systemen (wie systemd) Programme wie Dienste beim Booten oder wann immer starten.

Einige Programme unter Linux können jedoch nicht als Daemon ausgeführt oder in moderne Init-Systeme integriert werden. Dies ist eine echte Unannehmlichkeit, aber verständlich, da nicht alle Entwickler die Fähigkeit oder Zeit haben, neue Funktionen hinzuzufügen.

Glücklicherweise sind Befehle wie nohup oder disown immer noch Realität und können die Lücke schließen, wenn Programme wie dieses in den Hintergrund treten. Sie sind nicht perfekt oder schick, aber sie erledigen die Arbeit, wenn sie gebraucht werden.

Wenn Ihnen dieser Linux-Artikel gefallen hat, lesen Sie unbedingt einige unserer anderen Linux-Inhalte, z. B. wie Sie Ihr Google-Konto mit GNOME Shell verbinden, 5 der besten Linux-Distributionen für Windows-Benutzer im Jahr 2021 und 15 LS-Befehle, die Sie kennen müssen .

Ist dieser Artikel nützlich? ja Nein

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *