Linux Nohup Command

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

Normalerweise wird die Sitzung beendet, wenn Sie ein Programm über SSH ausführen, wenn Ihre Verbindung unterbrochen wird oder Sie sich abmelden, und alle vom Terminal ausgeführten Prozesse werden gestoppt. Hier ist der Befehl nohup nützlich., Es ignoriert alle Hangup-Signale und der Prozess wird weiter ausgeführt.

So verwenden Sie den Befehl nohup #

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

nohup COMMAND 

Der Befehl akzeptiert keine anderen Optionen außer dem Standard --help und --version.,

Schauen wir uns folgendes 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 Schreibberechtigungen für das Arbeitsverzeichnis hat, wird die Datei im Stammverzeichnis des Benutzers erstellt.

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

Das Ausführen des Befehls im Hintergrund #

Mit 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 , hängen Sie am Ende des Befehls das Symbol & an:

nohup mycommand &

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

 25177

Sie können die Job-ID verwenden, um den Befehl mit der fg Befehl.,

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

kill -9 25132

Umleitung der Ausgabe in eine Datei #

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

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

nohup mycommand > mycommand.out 2>&1 &

Um die Standardausgabe und den Standardfehler auf verschiedene Dateien umzuleiten:

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

Alternativen #

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

Screen #

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

Tmux #

Tmux ist eine moderne alternative zu den 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 ausgeführt werden, wenn Sie das Terminal schließen.,

Disown #

disown ist ein Shell-Builtin, das einen Shell-Job aus dem Job-Steuerelement der Shell entfernt. Im Gegensatz zu nohup können Sie disown auch bei laufenden Prozessen verwenden.

Schlussfolgerung #

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.