Was ist/sind der/die Vorteil(e) davon, Anwendungen im Hintergrund laufen zu lassen?

Was ist/sind der/die Vorteil(e) davon, Anwendungen im Hintergrund laufen zu lassen?

Ich weiß wirklich nicht, welche Vorteile es hat, Anwendungen im Hintergrund laufen zu lassen.
So etwas wie Application &über die Befehlszeile.

Warum genau führen wir Anwendungen im Hintergrund aus und wann sollte ich mich dazu entschließen?

Antwort1

Im Allgemeinen werden Anwendungen, deren Ausführung zu lange dauert und keine Benutzerinteraktion erfordert, in den Hintergrund verschoben, damit wir unsere Arbeit im Terminal fortsetzen können.

Im Hintergrund laufende Jobs werden genauso behandelt wie im Vordergrund laufende Jobs, mit der Ausnahme, dass ihre STDOUT-, STDIN- und STDERR-Werte variieren.

Wenn Sie einen Job haben, der zu lange dauert, wie etwa eine Dateikomprimierung oder eine Sicherung, können Sie diese Jobs in den Hintergrund senden.

Sie können die im Hintergrund laufenden Jobs mit jobseinem Befehl auflisten.

$ ./job1.sh &
[1] 9747
$ ./job2.sh &
[2] 9749
$ ./job3.sh &
[3] 9751
$ jobs
[1]   Running                 ./job1.sh &
[2]-  Running                 ./job2.sh &
[3]+  Running                 ./job3.sh &

Wenn hier ein Job an die Hintergrundshell gesendet wird, wird das job idEnde piddes Prozesses angezeigt. Wenn wir möchten, dass der Prozess wieder in den Vordergrund kommt, können wir fgihn mit einem Befehl zurückholen.

$ fg 1
./job1.sh

Beachten Sie jedoch, dass beim Schließen des Terminals (der Shell) SIGHUP an alle Hintergrundprozesse gesendet wird, die von der Shell gestartet werden, wodurch diese Prozesse beendet werden. Um dies zu verhindern, können Sie disowndiese Prozesse mit einem Befehl aus der Jobtabelle entfernen und so verhindern, dass der Prozess beendet wird.

Eine der besten Möglichkeiten besteht darin, den Hintergrundprozess mit nohupeinem Befehl zu starten, sodass SIGHUP-Signale den Prozess nicht beenden und er sicher im Hintergrund ausgeführt wird.

Das Senden von SIGHUP an untergeordnete Prozesse (BG-Jobs) kann auch durch Festlegen huponexiteiner Option der Bash-Shell verhindert werden.

$ shopt -s huponexit

Diese Option ist in den neuesten Versionen von Bash standardmäßig festgelegt. Falls sie jedoch nicht festgelegt ist, können wir sie hinzufügen, ~/.bashrcum sie zu einem Standardverhalten zu machen.

Antwort2

Wenn Sie eine Anwendung ausführen, die beispielsweise 5 Minuten zum Beenden benötigt, beispielsweise einen Kopierauftrag, ist die Shell während der Ausführung des Programms für die gesamten 5 Minuten blockiert. Der Kopierauftrag befindet sich dann in der sogenannten Vordergrundprozessgruppe, gekennzeichnet durch ein +Zeichen in ps. Möglicherweise müssen Sie während dieser 5 Minuten andere Arbeiten ausführen, aber die Shell ist blockiert.

Wenn Sie den Kopierauftrag hingegen im Hintergrund ausführen ( cp source target &), wird Ihr Auftrag im Hintergrund ausgeführt, ohne die aktuelle Shell zu blockieren. Sie können mit anderen Dingen fortfahren. Sie können den Vorgang mit wieder in den Vordergrund holen, fgwenn Sie möchten.

verwandte Informationen