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.outgespeichert. - & (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+zanhalten, mitbgin den Hintergrund verschieben und dann mitdisown -h %1einen nohup-ähnlichen Effekt erzielen. - Beenden: Mit nohup gestartete Prozesse können nicht mit
Strg+cbeendet werden. Sie müssen die PID (Prozess-ID) mitps -ef | grep [Name]finden und den Prozess dann mitkill -9 [PID]beenden. - Vorsicht bei Festplattenspeicher: Wenn ein langlebiges Programm kontinuierlich Protokolle in
nohup.outschreibt, kann die Datei riesig werden und den Server zum Stillstand bringen. Leeren Sie sie regelmäßig oder leiten Sie die Ausgabe an/dev/nullum.