Come inviare lavori in background senza interromperli?


10

Ctrl + z invia il lavoro corrente in background, ma lo interrompe.

E come riprendere un lavoro interrotto?

Risposte:


17

puoi eseguire "bg" per eseguirlo in background.

"fg" lo sposta in primo piano

Nota che bg e fg accettano i lavori # invece dei PID, quindi se hai più lavori in esecuzione contemporaneamente, usa il comando "jobs" per ottenere i numeri dei lavori.


8

è inoltre possibile avviare un programma come processo in background con un "&" sulla riga di comando.

per esempio

myprogram &

nota che l'output (sia stdout che stderr) andrà comunque all'attuale tty, quindi è generalmente una buona idea reindirizzare a / dev / null o ad un file di registro, in questo modo:

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

in entrambi gli esempi, è un lavoro in background come un altro, quindi puoi comunque riportarlo in primo piano con 'fg' (ma se hai reindirizzato l'output non vedrai molto).


5

In bash, l'inserimento di un "bg" mette il lavoro in background fino a quando non blocca l'input necessario. Continuerà a essere inviato a STDERR e STDOUT, il che potrebbe non essere utile. È possibile inserire "fg" per riportare il lavoro in primo piano.

[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 ~]$ 

Quindi, quello stava iniziando un lungo lavoro di copia e sospendendolo, iniziando un secondo lungo lavoro di copia e sospendendolo, quindi mettendo il primo lavoro di copia in background e lasciandolo correre, seguito da quel primo lavoro di copia in uscita. Quindi ho messo l'ultimo lavoro di copia in primo piano e l'ho lasciato finire.


bg 1e fg 1non lavorare per me, ma bg %1e fg %1farlo.
Alexej Magura,

4

nohup task.sh &

Viene eseguito in background, l'output passa a nohup.out nella directory corrente. Continua a funzionare quando ti disconnetti.


2

Un'altra opzione è l'eccellente utility per lo schermo , che può essere utilizzata per eseguire molti processi contemporaneamente, senza dover tenere aperto un terminale. Inoltre, consente un'interattività molto più semplice rispetto a bg e fg.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.