Ich weiß nie, wann der beste Zeitpunkt ist, um nohup und das & am Ende des Befehls zu verwenden.
Nohup veranlasst ein Programm, das HUP-Signal zu ignorieren, sodass es ausgeführt werden kann, nachdem das aktuelle Terminal geschlossen / der Benutzer abgemeldet wurde. Nohup sendet kein Programm in den Hintergrund.
& am Ende des Befehls bezieht sich auf die Shell-Job-Steuerung, sodass der Benutzer in der aktuellen Shell-Sitzung weiterarbeiten kann.
Normalerweise werden nohup und & kombiniert, um ein Programm zu starten, das nach dem Abmelden des Benutzers ausgeführt wird und die Fortsetzung der Arbeit in der aktuellen Shell-Sitzung ermöglicht.
Normalerweise verwende ich, &
wenn ich im Hintergrund einen Befehl ausführen möchte, dessen Ausführung nicht lange dauert, oder einen, bei dem es mir egal ist, ob das Programm beendet wird, wenn ich unerwartet von einer Sitzung abgemeldet werde.
xcalc &
rdesktop 1.2.3.4 &
./this_only_takes_a_few_seconds_but_i_want_my_shell_back.py &
Wenn ich über ein VPN oder eine zwielichtige Remoteverbindung arbeite, verwende ich normalerweise nohup
alles, was eine Weile dauern wird. Wenn Sie beispielsweise große Datenmengen auf einem Remote-Host importieren, möchten Sie möglicherweise nohup
sicherstellen, dass Sie nach dem Trennen der Verbindung nicht erneut von vorne beginnen, wenn Sie die Verbindung wiederherstellen.
nohup ./do_data_load.py mydatafile.txt &
Es wird auch verwendet, wenn ein Entwickler einen Dienst nicht ordnungsgemäß dämonisiert, sodass Sie nohup
sicherstellen müssen , dass er beim Abmelden nicht beendet wird.
nohup sillyd &
Wenn Sie nohup
beim Ausführen der letzten beiden Beispiele vergessen haben, etwas zu verwenden , können Sie die integrierte Bash- oder Zsh-Funktion disown
für den gleichen Effekt verwenden.
$ sillyd &
[1] 12345 # Whoops!
$ disown %1
Es ist ziemlich selten, nohup
ohne zu verwenden &
, da Sie nicht wirklich eine neue Verbindung zu der nicht aktualisierten Sitzung herstellen können, wenn Sie abgemeldet sind. Dies macht seine Nützlichkeit für interaktive Befehle so gut wie unmöglich. Wenn Sie über einen interaktiven Befehl verfügen, den Sie über Sitzungen hinweg beibehalten oder komplizierte Verbindungsabbrüche vermeiden möchten, können Sie diesen verwenden screen
. Die Feuerkraft einer vollständig bewaffneten und operativen screen
Sitzung liegt außerhalb des Rahmens dieses Beitrags. Sie sollten sich dies daher genauer ansehen .
byobu
dem Bildschirm einige nette Funktionen hinzuzufügen. Es ist in den meisten passenden Repos und in den EPEL-Repos für Red Hat verfügbar.nohup: Aktuellen Benutzer abmelden, der Vorgang wird nicht gestoppt
&: Mit diesem Symbol wird im aktuellen Terminal keine Ausgabe ausgegeben. Der Prozess wird im Hintergrund ausgeführt
quelle