Ich versuche, ein Shell-Skript zu verwenden, um einen Befehl zu starten. Es ist mir egal, ob / wann / wie / warum es endet. Ich möchte, dass der Prozess gestartet und ausgeführt wird, aber ich möchte sofort zu meiner Shell zurückkehren können ...
100
nohup
,&
unddisown
, klicken Sie hier , um die Rolle zu der vierten Antwort .Antworten:
Sie können das Skript einfach im Hintergrund ausführen:
Beachten Sie, dass dies anders ist als das Einfügen
&
in Ihr Skript, das wahrscheinlich nicht das tut, was Sie wollen.quelle
&
im Skript befindet und Sie kein habenwait
, wird der Hintergrundbefehl beim Beenden des Skripts beendet.myscript
die Terminalumgebung geändert wird, z. Es handelt sich um einen Terminalinitialisierungsbefehl, der nicht sofort benötigt wird und verzögert werden kann. Wird die Terminalumgebung trotzdem geändert?Jeder hat es einfach vergessen
disown
. Also hier ist eine Zusammenfassung:&
stellt den Job in den Hintergrund.disown
Entfernt den Prozess aus der Jobsteuerung der Shell, lässt ihn jedoch weiterhin mit dem Terminal verbunden.SIGHUP
(Wenn die Shell ein empfängtSIGHUP
, sendet sie auch einSIGHUP
an den Prozess, wodurch der Prozess normalerweise beendet wird).nohup
Trennt den Prozess vom Terminal, leitet seinen Ausgang an das Terminal umnohup.out
und schirmt ihn abSIGHUP
.SIGHUP
.&
(als Hintergrundjob) verwendet.quelle
disown
unter Debian oder OS X nicht finden. Ich dachte, es wäre ein Programm, aber ich scheine mich zu irren. Was ist es?legt nicht auf, wenn Sie das Terminal schließen. Die Ausgabe erfolgt standardmäßig an nohup.out
Sie können dies mit Hintergrund kombinieren,
und die Ausgabe loswerden,
Sie können auch
disown
einen Befehl. Typcmd
,Ctrl-Z
,bg
,disown
quelle
tail nohup.out
Dadurch werden die letzten 10 Zeilen der Befehlsausgabe angezeigt. Ich verwende dies für Rsync-Sicherungsjobs, um zu sehen, in welcher Datei es sich gerade befindet.jobs
.Alternativ können Sie nach dem Ausführen des Programms Strg-Z drücken, um das Programm zu stoppen, und dann eingeben
Dadurch wird Ihr zuletzt gestopptes Programm in den Hintergrund gestellt. (Nützlich, wenn Sie etwas ohne '&' gestartet haben und es dennoch im Hintergrund haben möchten, ohne es neu zu starten.)
quelle
screen -m -d $command$
Startet den Befehl in einer getrennten Sitzung. Sie können eine Verbindungscreen -r
zur gestarteten Sitzung herstellen. Es ist ein wunderbares Tool, das auch für Remote-Sitzungen äußerst nützlich ist. Lesen Sie mehr unterman screen
.quelle