Beim Verlassen der Shell eines Linux-Systems werden normalerweise alle laufenden Prozesse beendet oder aufgelegt. Was tun Sie also, wenn Sie die Prozesse weiterhin ausführen möchten, auch wenn Sie die Shell/das Terminal verlassen? Hier setzt der nohup-Befehl an kommt rein.
Nohup-Befehl
Nohup, kurz für no hang up, ist ein Befehl in Linux-Systemen, der Prozesse auch nach dem Verlassen der Shell oder des Terminals am Laufen hält.
Nohup verhindert, dass die Prozesse oder Jobs das Signal SIGHUP (Signal Hang UP) empfangen. Dies ist ein Signal, das beim Schließen oder Verlassen des Terminals an einen Prozess gesendet wird. In dieser Anleitung werfen wir einen Blick auf den Befehl nohup und demonstrieren, wie er verwendet werden kann.
Nohup-Befehlssyntax
Die Nohup-Befehlssyntax lautet wie folgt:
nohup command arguments
ODER
nohup options
Mal sehen, wie der Befehl ins Spiel kommt
Überprüfen der Version von Nohup
Sie können damit beginnen, die Version von Nohup mit der folgenden Syntax zu überprüfen
nohup --version
Ausgabe
Starten eines Prozesses mit Nohup
Wenn Sie Ihre Prozesse/Jobs am Laufen halten möchten, stellen Sie dem Befehl nohup
voran Wie nachfolgend dargestellt. Die Jobs werden weiterhin in der Shell ausgeführt und werden beim Verlassen der Shell oder des Terminals nicht beendet.
nohup ./hello.sh
Ausgabe
Aus der obigen Ausgabe wurde die Ausgabe des Befehls in nohup.out
gespeichert um diesen Lauf zu überprüfen,
cat nohup.out
Ausgabe
Außerdem können Sie die Ausgabe wie gezeigt in eine andere Datei umleiten
nohup ./hello.sh > output.txt
Noch einmal, um die Datei run
anzuzeigencat output.txt
Ausgabe
Um zu einer Datei und zu Standardfehler und -ausgabe umzuleiten, verwenden Sie > filename 2>&1
Attribut wie gezeigt
nohup ./hello.sh > myoutput.txt >2&1
Ausgabe
Starten eines Prozesses im Hintergrund mit Nohup
Um einen Prozess im Hintergrund zu starten, verwenden Sie den &
Symbol am Ende des Befehls. In diesem Beispiel pingen wir google.com und senden es in den Hintergrund.
nohup ping google.com &
Ausgabe
Um den Vorgang beim Fortsetzen der Shell zu überprüfen, verwenden Sie pgrep
Befehl wie gezeigt
pgrep -a ping
Ausgabe
Wenn Sie den laufenden Prozess stoppen oder beenden möchten, verwenden Sie den kill
Befehl gefolgt von der Prozess-ID wie gezeigt
kill 2565
Ausgabe
Zusammenfassung
- Alle Prozesse, die mit dem nohup-Befehl ausgeführt werden, ignorieren das SIGHUP-Signal, selbst wenn die Shell verlassen wird.
- Sobald ein Job mit dem nohup-Befehl gestartet oder ausgeführt wird, ist stdin für den Benutzer nicht verfügbar.
- Standardmäßig
nohup.out
wird als Standarddatei für stdout und stderr verwendet.