Startseite > Prozessverwaltung > nohup

nohup: Weiterlaufen nach dem Abmelden

Ein Tool, das Befehle auch dann weiterlaufen lässt, wenn das Terminal geschlossen oder die SSH-Verbindung unterbrochen wird. Es ist unerlässlich für langwierige Aufgaben (Serverausführung, große Downloads, Batch-Jobs), die im Hintergrund ausgeführt werden sollen.

Was ist nohup?

nohup steht für 'No Hang Up' und bedeutet, dass ein Befehl ausgeführt wird, der das HUP-Signal (Hang-Up-Signal) ignoriert. Normalerweise werden Programme beim Schließen eines Terminalfensters beendet, aber nohup schützt sie davor wie ein Schild.

3 Schlüsselkonzepte

  • HUP-Signal ignorieren: Ignoriert das Beendigungssignal (SIGHUP), das das System beim Abmelden des Benutzers sendet, um den Prozess am Laufen zu halten.
  • nohup.out: Wenn keine separate Datei zum Speichern angegeben wird, werden die Ausführungsergebnisse (Ausgabeinhalte) automatisch in der Datei `nohup.out` gespeichert.
  • & (Hintergrund): nohup allein beansprucht das Terminal. Normalerweise wird `&` am Ende des Befehls angehängt, um ihn in den Hintergrund zu schicken.

Wichtige Syntax und Optionen (Shell)

nohup selbst hat keine komplexen Optionen. Stattdessen wird es in Kombination mit dem **auszuführenden Befehl** und der **Umleitung (Festlegung der Ausgaberichtung)** verwendet.

1. Grundlegende Ausführungskonfiguration

2. Protokoll- (Ausgabe-) Verwaltung

3. Hilfe

Erzeugter Befehl:

Kombinieren Sie die Befehle.

Beschreibung:

`nohup` Führen Sie den Befehl aus.

Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.

Anwendungsbeispiele

Die am häufigsten verwendeten nohup-Muster in der Praxis.

Grundlegendste Nutzung

nohup ./backup.sh &

Führt ein Skript im Hintergrund aus. Die Ausgabe wird in `nohup.out` gesammelt.

Protokolldatei benennen (empfohlen)

nohup python3 app.py > my-app.log 2>&1 &

Speichert Protokolle in `my-app.log` anstelle von `nohup.out`. `2>&1` bedeutet, dass Fehlermeldungen ebenfalls in derselben Datei gespeichert werden.

Ohne Protokoll ausführen

nohup ./heavy-task.sh > /dev/null 2>&1 &

Wenn der Ausgabeinhalt nicht benötigt wird oder zu groß ist und die Gefahr besteht, dass die Festplatte voll wird, wird die Ausgabe an `/dev/null` verworfen.

Laufende nohup-Prozesse finden

ps -ef | grep app.py

Überprüft laufende Prozesse mit dem Befehl `ps`.

Installation

nohup ist ein Standardbefehl, der in den 'GNU Coreutils' enthalten ist und bereits in fast allen Linux-Distributionen installiert ist.

Installation prüfen

In den meisten Fällen ist keine separate Installation erforderlich. Sie können den Installationsstatus mit dem folgenden Befehl überprüfen.

Version überprüfen

nohup --version

Tipps & Hinweise

Nützliche Tipps

  • Bereits laufende Aufgaben?: Wenn Sie vergessen haben, nohup zu verwenden und einen Befehl einfach gestartet haben, können Sie ihn mit `Ctrl+z` anhalten, mit `bg` in den Hintergrund verschieben und dann mit `disown -h %1` einen nohup-ähnlichen Effekt erzielen.
  • Beenden: Mit nohup gestartete Prozesse können nicht mit `Strg+c` beendet werden. Sie müssen die PID (Prozess-ID) mit `ps -ef | grep [Name]` finden und den Prozess dann mit `kill -9 [PID]` beenden.
  • Vorsicht bei Festplattenspeicher: Wenn ein langlebiges Programm kontinuierlich Protokolle in `nohup.out` schreibt, kann die Datei riesig werden und den Server zum Stillstand bringen. Leeren Sie sie regelmäßig oder leiten Sie die Ausgabe an `/dev/null` um.

Verwandte Befehle

Funktional ähnliche oder häufig zusammen verwendete Befehle.



Gleiche Kategorie Befehle