Der Befehl nohup („no hangup“) verhindert, dass ein Prozess beendet wird, wenn sich der Benutzer abmeldet. Wenn beispielsweise ein Administrator ein Backup-Skript startet und sich dann vom System abmeldet, wird das Skript nicht mehr ausgeführt. Durch Platzieren des nohup-Befehls vor dem normalen Befehl würde das Skript auch dann fortgesetzt, wenn sich der Administrator abgemeldet hat.
Syntax
Die Syntax des nohup-Befehls lautet:
# nohup {command/script}
Wenn beim Ausführen des nohup-Befehls der folgende Fehler auftritt:
nohup: command not found
Sie können versuchen, das folgende Paket gemäß Ihrer Wahl der Distribution zu installieren:
Verteilung | Befehl |
---|---|
OS X | brew install coreutils |
Debian | apt-get install coreutils |
Ubuntu | apt-get install coreutils |
Alpin | apk Coreutils hinzufügen |
Arch Linux | pacman -S coreutils |
Kali-Linux | apt-get install coreutils |
CentOS | yum installiere coreutils |
Fedora | dnf installiere coreutils |
Raspbian | apt-get install coreutils |
Beispiele
1. Ausführen von nohup ohne Angabe einer Ausgabedatei
Lassen Sie uns ein Beispiel machen und testen, ob es tatsächlich weiter funktioniert, nachdem Sie sich abgemeldet haben. Wir starten ein Skript namens script.sh. Der Inhalt des Skripts ist wie folgt:
# cat script.sh #!/bin/sh while(true) do echo "Hello World!" sleep 10 done
Lassen Sie uns das Skript in backgroupd mit dem Befehl nohup ausführen:
# nohup script.sh & [1] 179 $ nohup: appending output to `nohup.out`
Wie Sie oben sehen können, haben wir keine Ausgabedatei angegeben. Daher gehen die Standardausgabe und der Standardfehler standardmäßig in die Datei nohup.out in dem Verzeichnis, aus dem das Skript aufgerufen wurde. Auch die Nummer 179 Gibt die Prozess-ID (PID) des Jobs an. Diese PID kann in der Ausgabe des Befehls „ps -ef“ wie unten gezeigt überprüft werden.
Verlassen Sie nun die Shell, melden Sie sich erneut an und führen Sie den folgenden Befehl aus:
$ ps x | grep script.sh 179 ? S N 0:01 sh /root/script.sh 506 p2 S 0:00 grep script.sh
Das Skript funktioniert noch. Verwenden Sie „ps -ef | grep ps1“, wenn Ihr System ps x nicht unterstützt. Sie können auch die Ausgabedatei nohup.out auf weitere Bestätigung überprüfen.
# cat nohup.out Hello World! Hello World! Hello World! Hello World! ...HINWEIS :Wenn Sie einen anderen Befehl mit nohup ausführen, wird die Ausgabe an die vorhandene nohup.out-Datei angehängt. Seien Sie vorsichtig, wenn Sie mehrere Befehle aus demselben Verzeichnis ausführen, da die gesamte Ausgabe an dieselbe nohup.out-Datei gesendet wird, was verwirrend werden kann.
Ausführen von nohup unter Angabe einer Ausgabedatei
Jetzt kann das obige Skript auch mit dem nohup-Befehl ausgeführt werden und eine benutzerdefinierte Ausgabedatei angeben, wie unten gezeigt:
# nohup script.sh > /tmp/script.out 2>&1 [1] 14235
Schlussfolgerung
Wenn Sie einen Prozess ausführen und nicht glauben, dass er abgeschlossen sein wird, wenn Sie sich für den Tag abmelden, verwenden Sie den Befehl nohup. Nohup setzt die Verarbeitung fort, wenn Sie Ihr Konto verlassen. Nohup bedeutet nicht auflegen .