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.