Der Unterschied zwischen Nohup und &

neinhup

Nohup ist die Abkürzung für „no hang up“, was bedeutet, nicht aufzulegen. Führen Sie den durch den Command-Parameter und alle zugehörigen Arg-Parameter angegebenen Befehl aus und ignorieren Sie alle Hangup-Signale (SIGHUP).
Syntax: nohup Command [ Arg ... ] [ & ]
z. B. nohup tail -f nohup.out

&

Es bezieht sich auf die Ausführung im Hintergrund.
Die Syntax Command [ Arg ... ] [ & ]
lautet wie folgt: sh test.sh &

Der Unterschied zwischen kostenlosen Signalen:

  • nohup bedeutet, das SIGHUP-Signal zu ignorieren. Wenn Sie also nohup ./a.out ausführen, schließen Sie die Shell (schließen Sie die Sitzung), dann ist der start.sh-Prozess weiterhin vorhanden (immun gegen das SIGHUP-Signal). Bitte beachten Sie jedoch, dass bei Verwendung von Strg C direkt in der Shell auch der Prozess start.sh verschwindet (da er nicht immun gegen das SIGINT-Signal ist).
  • & bedeutet, dass es im Hintergrund ausgeführt wird. Wenn Sie ./a.out & ausführen, wird start.sh auch dann ausgeführt, wenn Sie Strg C verwenden (da es immun gegen das SIGINT-Signal ist). Beachten Sie jedoch, dass beim direkten Schließen der Shell auch der Prozess start.sh verschwindet. Es ist ersichtlich, dass der Hintergrund von & nicht hart ist (da er nicht immun gegen das SIGHUP-Signal ist).

Der Unterschied zwischen Eingabe und Ausgabe:

  • nohup sh test.sh stellt die Aufgabe sh test.sh in den Hintergrund, schließt die Standardeingabe und die Rezeption kann keine Eingaben mehr empfangen (Standardeingabe). Standardmäßig werden alle Ausgaben des Jobs in eine Datei mit dem Namen umgeleitet nohup. Unter den Out-Dateien wird die Datei nohup.out standardmäßig in das aktuelle Verzeichnis geschrieben. Wenn im Verzeichnis keine Schreibberechtigung vorhanden ist, wird versucht, nach $HOME/nohup.out zu schreiben. Wenn dies immer noch fehlschlägt, wird die Die gesamte Befehlsausführung schlägt fehl. Auch wenn xshell geschlossen und die aktuelle Sitzung beendet wird, wird es weiterhin ausgeführt.
  • sh test.sh &, stellen Sie die Aufgabe sh test.sh in den Hintergrund, und die Standardausgabe und die Standardfehlerinformationen werden weiterhin ausgegeben.

& ermöglicht die Ausführung des Befehls im Hintergrund. Ob der Befehl nach Verlassen des Terminals weiterhin ausgeführt werden kann, hängt davon ab, ob es sich bei dem Prozess um einen Daemon-Prozess handelt. Wenn nicht, ist nohup zur Unterstützung erforderlich.
Unter Linux/Unix können nur Daemon-Prozesse nach dem Verlassen des Terminals weiter ausgeführt werden, während normale Prozesse aufgrund des Empfangs des SIGHUP-Signals (Suspend-Signal) beim Schließen des Terminals beendet werden. Um einen normalen Prozess über einen längeren Zeitraum auszuführen, müssen Sie daher den Befehl nohup verwenden.

Gemeinsame Nutzung:nohup sh test.sh &

Supongo que te gusta

Origin blog.csdn.net/weixin_37909391/article/details/130733369
Recomendado
Clasificación