Wie kann ich Jobs in den Hintergrund senden, ohne sie zu stoppen?


10

Strg + Z sendet den aktuellen Job in den Hintergrund, stoppt ihn jedoch.

Und wie kann man einen gestoppten Job wieder aufnehmen?

Antworten:


17

Sie können "bg" ausführen, um es im Hintergrund auszuführen.

"fg" rückt es in den Vordergrund

Beachten Sie, dass bg und fg Jobnummern anstelle von PIDs verwenden. Wenn also mehrere Jobs gleichzeitig ausgeführt werden, verwenden Sie den Befehl "jobs", um die Jobnummern abzurufen.


8

Sie können ein Programm auch als Hintergrundjob mit einem "&" in der Befehlszeile starten.

z.B

myprogram &

Beachten Sie, dass die Ausgabe (sowohl stdout als auch stderr) immer noch auf das aktuelle tty geht. Daher ist es im Allgemeinen eine gute Idee, nach / dev / null oder in eine Protokolldatei umzuleiten, wie folgt:

myprogram> ~ / program.log 2> & 1 &

In beiden Beispielen handelt es sich um einen Hintergrundjob wie jeden anderen, sodass Sie ihn mit 'fg' wieder in den Vordergrund stellen können (aber wenn Sie die Ausgabe umgeleitet haben, sehen Sie nicht viel).


5

Wenn Sie in bash ein "bg" eingeben, wird der Job in den Hintergrund gestellt, bis die Eingabe blockiert wird. Es wird weiterhin an STDERR und STDOUT ausgegeben, was möglicherweise nicht hilfreich ist. Sie können "fg" eingeben, um den Job wieder in den Vordergrund zu bringen.

[adjuster@mx02 ~]$ cp ~/crap/* ~/crap2 
(Ctrl-Z)
[1]+  Stopped                cp ~/crap ~/crap2 

[adjuster@mx02 ~]$ cp ~/crap3/* ~/crap4
(Ctrl-Z)
[2]+  Stopped                cp ~/crap3/* ~/crap

[adjuster@mx02 ~]$ jobs
[1]+  Stopped                cp ~/crap ~/crap2 
[2]+  Stopped                cp ~/crap3/* ~/crap

[adjuster@mx02 ~]$ bg 1
[1]- cp ~/crap ~/crap2 &
[1]-  Exit 1                  cp ~/crap ~/crap2 

[adjuster@mx02 ~]$ fg 2
[adjuster@mx02 ~]$ 

Das bedeutete also, einen langen Kopierjob zu starten und anzuhalten, einen zweiten langen Kopierjob zu starten und anzuhalten, dann den ersten Kopierjob in den Hintergrund zu stellen und laufen zu lassen, gefolgt vom Beenden des ersten Kopierjobs. Dann stelle ich den letzten Kopierauftrag in den Vordergrund und lasse ihn fertig werden.


bg 1und fg 1arbeite nicht für mich, sondern bg %1und fg %1tue es.
Alexej Magura

4

nohup task.sh &

Läuft im Hintergrund, die Ausgabe geht an nohup.out im aktuellen Verzeichnis. Wird beim Abmelden weiter ausgeführt.


2

Eine weitere Option ist das hervorragende Bildschirmdienstprogramm , mit dem viele Prozesse gleichzeitig ausgeführt werden können, ohne dass ein Terminal geöffnet bleiben muss. Es ermöglicht auch eine viel einfachere Interaktivität als bg und fg.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.