sviluppo-web-qa.it

Come inviare lavori in background senza interromperli?

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

E come riprendere un lavoro interrotto?

10
Jader Dias

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.

17
Matt Simmons

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

per esempio.

 myprogram & 

si noti che l'output (sia stdout che stderr) andrà comunque all'attuale tty, quindi è generalmente una buona idea reindirizzare a/dev/null o a 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).

8
cas

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

[[email protected] ~]$ cp ~/crap/* ~/crap2 
(Ctrl-Z)
[1]+  Stopped                cp ~/crap ~/crap2 

[[email protected] ~]$ cp ~/crap3/* ~/crap4
(Ctrl-Z)
[2]+  Stopped                cp ~/crap3/* ~/crap

[[email protected] ~]$ jobs
[1]+  Stopped                cp ~/crap ~/crap2 
[2]+  Stopped                cp ~/crap3/* ~/crap

[[email protected] ~]$ bg 1
[1]- cp ~/crap ~/crap2 &
[1]-  Exit 1                  cp ~/crap ~/crap2 

[[email protected] ~]$ fg 2
[[email protected] ~]$ 

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 in esecuzione, 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.

5
Evan Anderson

Nohup task.sh &

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

4
Craig

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

2
Hay