Alternativ können Sie, nachdem Sie das Programm zum Laufen gebracht haben, Strg-Z drücken, was Ihr Programm stoppt, und dann
eingebenbg
Dadurch wird Ihr zuletzt gestopptes Programm in den Hintergrund gestellt. (Nützlich, wenn Sie etwas ohne '&' gestartet haben und es immer noch im Hintergrund haben möchten, ohne es neu zu starten)
nohup cmd
legt nicht auf, wenn Sie das Terminal schließen. Die Ausgabe geht standardmäßig nach nohup.out
Sie können dies mit einem Hintergrund kombinieren,
nohup cmd &
und die Ausgabe loswerden,
nohup cmd > /dev/null 2>&1 &
Sie können auch disown
Ein Kommando. geben Sie cmd
ein , Ctrl-Z
, bg
, disown
Sie können das Skript einfach im Hintergrund ausführen:
$ myscript &
Beachten Sie, dass sich dies vom Setzen des &
unterscheidet in Ihrem Skript, das wahrscheinlich nicht das tut, was Sie wollen.
Alle haben einfach disown
vergessen . Hier also eine Zusammenfassung:
-
&
setzt den Job in den Hintergrund.- Lässt es beim Versuch, Eingaben zu lesen, blockieren und
- Sorgt dafür, dass die Shell nicht auf ihre Fertigstellung wartet.
-
disown
entfernt den Prozess aus der Jobsteuerung der Shell, lässt ihn aber weiterhin mit dem Terminal verbunden.- Eines der Ergebnisse ist, dass die Shell kein
SIGHUP
sendet (Wenn die Shell einenSIGHUP
empfängt , es sendet auch einenSIGHUP
an den Prozess, was normalerweise dazu führt, dass der Prozess beendet wird). - Und natürlich kann es nur auf Hintergrundjobs angewendet werden (weil Sie es nicht eingeben können, wenn ein Vordergrundjob läuft).
- Eines der Ergebnisse ist, dass die Shell kein
-
nohup
trennt den Prozess vom Terminal, leitet seine Ausgabe aufnohup.out
um und schirmt es vonSIGHUP
ab .- Der Prozess erhält keinen gesendeten
SIGHUP
. - Es ist völlig unabhängig von der Jobsteuerung und könnte im Prinzip auch für Vordergrundjobs verwendet werden (obwohl das nicht sehr nützlich ist).
- Wird normalerweise mit
&
verwendet (als Hintergrundjob).
- Der Prozess erhält keinen gesendeten