Android

Linux nohup Befehl

Linux in 5 Minuten: Shell Befehle finden mit apropos

Linux in 5 Minuten: Shell Befehle finden mit apropos

Inhaltsverzeichnis:

Anonim

Der Befehl nohup führt ein anderes als Argument angegebenes Programm aus und ignoriert alle SIGHUP Signale (Auflegen). SIGHUP ist ein Signal, das an einen Prozess gesendet wird, wenn sein Steuerterminal geschlossen ist.

Wenn Sie ein Programm über SSH ausführen, die Verbindung unterbrochen wird oder wenn Sie sich abmelden, wird die Sitzung normalerweise beendet und alle vom Terminal ausgeführten Prozesse werden angehalten. Hier bietet sich der Befehl nohup . Alle Aufhängesignale werden ignoriert und der Vorgang wird fortgesetzt.

So verwenden Sie den Befehl nohup

Die Syntax für den Befehl nohup lautet wie folgt:

nohup COMMAND

Der Befehl akzeptiert keine anderen Optionen als die Standardoptionen --help und --version .

Schauen wir uns das folgende Beispiel an:

nohup mycommand

nohup: ignoring input and appending output to 'nohup.out'

nohup führt den Befehl mycommand im Vordergrund aus und leitet die Befehlsausgabe in die Datei nohup.out um. Diese Datei wird im aktuellen Arbeitsverzeichnis erstellt. Wenn der Benutzer, der den Befehl ausführt, keine Schreibberechtigung für das Arbeitsverzeichnis hat, wird die Datei im Basisverzeichnis des Benutzers erstellt.

Wenn Sie sich abmelden oder das Terminal schließen, wird der Vorgang nicht abgebrochen.

Ausführen des Befehls im Hintergrund

Die Verwendung von nohup im Vordergrund ist nicht sehr nützlich, da Sie erst nach Abschluss des Befehls mit der Shell interagieren können.

Um den Befehl im Hintergrund auszuführen, fügen Sie das Symbol & am Ende des Befehls hinzu:

nohup mycommand &

Die Ausgabe enthält die Shell-Job-ID (in Klammern) und die Prozess-ID:

25177

Mit der Job-ID können Sie den Befehl mit dem Befehl fg in den Vordergrund bringen.

Wenn Sie den Prozess aus irgendeinem Grund beenden möchten, verwenden Sie den Befehl kill gefolgt von der Prozess-ID:

kill -9 25132

Ausgabe in eine Datei umleiten

Standardmäßig leitet nohup die Befehlsausgabe in die Datei nohup.out um. Wenn Sie die Ausgabe in eine andere Datei umleiten möchten, verwenden Sie die Standard-Shell-Umleitung.

Um beispielsweise die Standardausgabe und den Standardfehler an mycommand.out , würden Sie mycommand.out verwenden:

nohup mycommand > mycommand.out 2>&1 &

So leiten Sie die Standardausgabe und den Standardfehler in verschiedene Dateien um:

nohup mycommand > mycommand.out 2> mycommand.err &

Alternativen

Es gibt verschiedene alternative Programme, mit denen Sie verhindern können, dass ein Befehl beendet wird, wenn Sie das Terminal schließen oder die Verbindung trennen.

Bildschirm

Screen oder GNU Screen ist ein Terminal-Multiplexer-Programm, mit dem Sie eine Bildschirmsitzung starten und eine beliebige Anzahl von Fenstern (virtuelle Terminals) innerhalb dieser Sitzung öffnen können. In Screen ausgeführte Prozesse werden weiterhin ausgeführt, wenn ihr Fenster nicht sichtbar ist, auch wenn Sie die Verbindung trennen.

Tmux

Tmux ist eine moderne Alternative zum GNU-Bildschirm. Mit Tmux können Sie auch eine Sitzung erstellen und mehrere Fenster in dieser Sitzung öffnen. Tmux-Sitzungen sind persistent, was bedeutet, dass Programme, die in Tmux ausgeführt werden, auch dann weiter ausgeführt werden, wenn Sie das Terminal schließen.

Verleugnen

disown ist eine eingebaute Shell, die einen Shell-Job aus der Job-Kontrolle der Shell entfernt. Im Gegensatz zu nohup können Sie disown für laufende Prozesse verwenden.

Fazit

nohup können Sie verhindern, dass Befehle beendet werden, wenn Sie sich abmelden oder das Terminal verlassen.

Nohup Terminal