Beim Verlassen der Shell eines Linux-Systems werden normalerweise alle laufenden Prozesse beendet oder hängen. Was tun Sie also, wenn Sie die Prozesse auch nach dem Verlassen der Shell/des Terminals weiterlaufen lassen möchten? Hier kommt der Nohup Command ins Spiel.
Zum Ausprobieren: Cloud-Server ab 3,12 €/Monat
ccloud³ VMs aus deutschen Rechenzentren – in Sekunden gestartet, stundengenau abgerechnet, mit 200 € Startguthaben für neue Konten. Server starten →
Nohup Command
Nohup, kurz für no hang up, ist ein Command in Linux-Systemen, der Prozesse auch nach dem Verlassen der Shell oder des Terminals weiterlaufen lässt. Nohup verhindert, dass die Prozesse oder Jobs das SIGHUP (Signal Hang UP) Signal erhalten. Dies ist ein Signal, das an einen Prozess gesendet wird, wenn das Terminal geschlossen oder verlassen wird. In diesem Leitfaden werfen wir einen Blick auf den Nohup Command und demonstrieren, wie er verwendet werden kann.
Nohup Command in Linux Syntax
Die Syntax des Nohup Commands lautet wie folgt;
nohup command argumentsODER
nohup optionsLassen Sie uns sehen, wie der Command ins Spiel kommt
Überprüfung der Version von Nohup
Sie können beginnen, indem Sie die Version von Nohup mit der untenstehenden Syntax überprüfen
nohup --versionOutput
Starten eines Prozesses mit Nohup
Wenn Sie Ihre Prozesse/Jobs am Laufen halten möchten, setzen Sie dem Befehl nohup wie unten gezeigt voran. Die Jobs werden weiterhin in der Shell ausgeführt und werden beim Verlassen der Shell oder des Terminals nicht beendet.
nohup ./hello.shOutput
Aus der obigen Ausgabe wurde die Ausgabe des Commands in nohup.out gespeichert, um dies zu überprüfen, führen Sie aus,
cat nohup.outOutput
Zusätzlich können Sie die Ausgabe in eine andere Datei umleiten, wie gezeigt
nohup ./hello.sh > output.txtNoch einmal, um die Datei anzusehen, führen Sie aus
cat output.txtOutput
Um in eine Datei umzuleiten und sowohl Standardfehler als auch Standardausgabe zu verwenden, verwenden Sie das > Dateiname 2>&1 Attribut wie gezeigt
nohup ./hello.sh > myoutput.txt 2>&1Output
Starten eines Prozesses im Hintergrund mit Nohup
Um einen Prozess im Hintergrund zu starten, verwenden Sie das &-Symbol am Ende des Commands. In diesem Beispiel pingen wir google.com an und senden es in den Hintergrund.
nohup ping google.com &Output
Um den Prozess beim Wiederaufnehmen der Shell zu überprüfen, verwenden Sie den pgrep Command wie gezeigt
pgrep -a pingOutput
Wenn Sie den laufenden Prozess stoppen oder beenden möchten, verwenden Sie den kill Command gefolgt von der Prozess-ID wie gezeigt
kill 2565Output
Zusammenfassung
- Alle Prozesse, die mit dem Nohup Command ausgeführt werden, ignorieren das SIGHUP Signal auch beim Verlassen der Shell.
- Sobald ein Job mit dem Nohup Command gestartet oder ausgeführt wird, steht stdin dem Benutzer nicht zur Verfügung.
- Standardmäßig wird nohup.out als Datei für stdout und stderr verwendet.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.