Wie führe ich eine Aufgabe im Hintergrund aus?

Wie führe ich eine Aufgabe im Hintergrund aus?

Ist es möglich, eine vom Terminal gestartete Aufgabe oder ein Skript im Hintergrund auszuführen?

Antwort1

Hier gibt es mehrere Antworten, je nachdem, was Sie möchten (diese Antwort ist in bashund zshShells gültig, andere können abweichen).

Wenn Sie einen Befehl im Hintergrund ausführen müssen und dies vor der Ausführung wissen, fügen Sie &am Ende des Befehls einfach ein hinzu (verwenden Sie sleep 60als Beispielbefehl , tun Sie 1 Minute lang nichts):

[romano:~] % sleep 60 &
[1] 9054
1& [romano:~] %

Wenn Sie es bereits ausgeführt haben, können Sie es mit ctrl- stoppen Z, und wenn die Shell Ihnen eine Eingabeaufforderung anzeigt, können Sie es mit dem folgenden Befehl in den Hintergrund stellen bg:

1& [romano:~] % sleep 60  
^Z
[1]  + 9084 suspended  sleep 60
1z [romano:~] 20 % bg
[1]  + 9084 continued  sleep 60
1& [romano:~] % 

In beiden Fällen ist der Prozess/Job immer noch an Ihr Terminal angehängt. Wenn Sie Ihr Terminal schließen,auflegen(HUP)-Signal wird an den Prozess gesendet --- die meisten Prozesse werden dann ordnungsgemäß beendet. Wenn Sie sicherstellen müssen, dass der Prozess fortgesetzt wird, können Sie ihn folgendermaßen starten:

nohup sleep 60 & 

bgoder, nachdem Sie es mit oder mit einem einfachen in den Hintergrund geschickt haben &, sagen Sie der Shell, dass sie es vergessen soll, mit:

disown %% 

( %%ist einJobkontrolleVerknüpfung und steht hier für den letzten im Hintergrund gesendeten Prozess).

Dann müssen Sie die Ausgabe des Prozesses berücksichtigen --- in den ersten beiden Fällen wird die Ausgabe immer noch auf dem Terminal ankommen; im Fall von nohupwird sie auf eine Datei namens umgeleitet nohup.out, und im letzteren Fall (mit disown) wird sie auf das Terminal gesendet, sofern Sie es nicht schließen. In diesem Fall ist das Verhalten völlig undefiniert. Es ist eine gute Praxis, sich selbst um die Ausgabe eines Hintergrundprozesses zu kümmern, indem SieUmleitung.

Antwort2

&zum Befehl hinzufügen .

Beispiel:

$ cp FromA ToB &

Antwort3

In diesem Beispiel werden Updates im Hintergrund ausgeführt:

sudo apt-get dist-upgrade -y &

Beachten Sie einfach das einzelne &.
Wenn Sie die Standardausgabe verbergen möchten, gehen Sie wie folgt vor:

sudo apt-get dist-upgrade -y > /dev/null &

Antwort4

Wenn Sie es fortgeschrittener möchten und die Sitzung später lokal oder per SSH verwenden möchten, können Sie screen verwenden.

# screen
# apt-get update -y

Drücken Sie dann CTRL+ Aund anschließend D.

Später können Sie Folgendes erneut anhängen:

# screen -rd

verwandte Informationen