Jeder war dabei: Sie möchten ein Terminal-Programm ausführen und es am Laufen halten. Das Problem ist, dass dieses Programm alt ist oder keine Funktion enthält, mit der es als Daemon im Hintergrund ausgeführt werden kann. Glücklicherweise gibt es mehrere Möglichkeiten, um Programme im Hintergrund zu erzwingen.

Bash kann das alles alleine machen und zusätzliche Programme müssen nicht installiert werden. Dieser Artikel wird mehrere Möglichkeiten aufzeigen, wie Sie Terminal-Programme in den Hintergrund schieben und dort halten können. Jede der aufgelisteten Methoden ist für ihren speziellen Anwendungsfall geeignet.

Beenden Sie einen Befehl mit &

Wenn Sie einen Befehl in den Hintergrund schieben möchten, ist die Verwendung von & am Ende eine einfache Möglichkeit, dies zu tun. Es kommt mit einem Fang, obwohl. Mit & wird der Befehl nicht von Ihnen getrennt; Es drückt es einfach im Hintergrund, so dass Sie ein Terminal weiter verwenden können.

 Befehl & 

Wenn die Terminalsitzung geschlossen wird, endet der Befehl. Verwenden Sie & ist gut, wenn Sie etwas für etwas drücken müssen, aber erwarten Sie nicht, dass es für immer fortfährt.

& Nach einem Befehl, dann verlasse es

Wenn Sie einen Befehl mit "just" ausführen, wird der Befehl nach hinten verschoben und so lange ausgeführt, wie das Terminalfenster geöffnet ist. Wenn Sie jedoch versuchen, diesen Befehl konstant zu halten, auch wenn Ihre Terminalsitzung beendet ist, können Sie den Befehl disown .

Um diese Methode zu verwenden, beginnen Sie zuerst mit dem Hinzufügen eines & .

 Befehl & 

Wie bereits erwähnt, wird mit & der Befehl in den Hintergrund geschoben, aber nicht von Ihrem Benutzer getrennt. Sie können dies überprüfen, indem Sie jobs in das Terminal eingeben. Es wird angezeigt, dass der Befehl im Hintergrund ausgeführt wird.

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

& Nach einem Befehl mit / dev / null

Hinzufügen von & nach einem Befehl wird einen Befehl in den Hintergrund schieben, aber als Ergebnis wird der Hintergrundbefehl weiterhin Nachrichten in das Terminal drucken, wenn Sie es verwenden. Wenn Sie dies verhindern möchten, sollten Sie den Befehl an /dev/null .

 Befehl &> / dev / null & 

Dies verhindert nicht, dass der Befehl geschlossen wird, wenn das Terminal geschlossen wird. Wie oben erwähnt, ist es jedoch möglich, den disown Verwerfen" zu verwenden disown um den Laufbefehl vom Benutzer zu entfernen.

Nohup, mit & und / dev / null

Im Gegensatz zu den vorherigen Befehlen können Sie mit nohup einen Befehl im Hintergrund ausführen und ihn weiter ausführen. Wie? Nohup umgeht das HUP-Signal (Signal auflegen), so dass Befehle im Hintergrund ausgeführt werden können, auch 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 Befehl &> / dev / null & 

Fazit

Die meisten Terminal-Programme unter Linux haben heute eingebaute Funktionen, die es ihnen erlauben, mit wenig Aufwand im Hintergrund zu laufen. Moderne init-Systeme (wie systemd) ermöglichen es Benutzern außerdem, Programme wie Dienste beim Booten oder wann immer zu starten.

Einige Programme unter Linux verfügen jedoch nicht über die Fähigkeit, als Daemon zu laufen oder in moderne Init-Systeme zu integrieren. Dies ist eine echte Unannehmlichkeit, ist aber verständlich, da nicht alle Entwickler die Fähigkeit oder Zeit haben, neue Funktionen hinzuzufügen.

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

Wie verschieben Sie laufende Terminalprogramme in den Hintergrund? Sag uns unten!

Bildquelle: Ein Terminal-vier Bildschirme