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.outwird als Standarddatei für stdout und stderr verwendet.