web-dev-qa-db-fra.com

Comment envoyer des travaux en arrière-plan sans les arrêter?

Ctrl + z envoie le travail en cours à l'arrière-plan, mais l'arrête.

Et comment reprendre un travail arrêté?

10
Jader Dias

vous pouvez exécuter "bg" pour l'exécuter en arrière-plan.

"fg" le déplace au premier plan

Notez que bg et fg acceptent les numéros de travail au lieu des PID, donc si vous avez plusieurs travaux en cours d'exécution à la fois, utilisez la commande "jobs" pour obtenir les numéros de travail.

17
Matt Simmons

vous pouvez également démarrer un programme en tant que tâche d'arrière-plan avec un "&" sur la ligne de commande.

par exemple.

 monprogramme & 

notez que la sortie (à la fois stdout et stderr) ira toujours au tty actuel, donc c'est généralement une bonne idée de rediriger vers/dev/null ou vers un fichier journal, comme ceci:

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

dans les deux exemples, c'est un travail d'arrière-plan comme les autres, vous pouvez donc le ramener au premier plan avec 'fg' (mais si vous avez redirigé la sortie, vous ne verrez pas grand-chose).

8
cas

En bash, la saisie d'un "bg" met le travail en arrière-plan jusqu'à ce qu'il bloque la saisie. Il continuera à sortir vers STDERR et STDOUT, ce qui pourrait ne pas être utile. Vous pouvez saisir "fg" pour ramener le travail au premier plan.

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

Donc, cela commençait un long travail de copie et le suspendait, démarrait un deuxième long travail de copie et le suspendait, puis plaçait le premier travail de copie en arrière-plan et le laissait s'exécuter, suivi de la sortie du premier travail de copie. Ensuite, je mets le dernier travail de copie au premier plan et le laisse se terminer.

5
Evan Anderson

Nohup task.sh &

S'exécute en arrière-plan, la sortie va à Nohup.out dans le répertoire actuel. Continue de s'exécuter lorsque vous vous déconnectez.

4
Craig

Une autre option est l'excellent utilitaire screen , qui peut être utilisé pour exécuter de nombreux processus en même temps, sans avoir à garder un terminal ouvert. Il permet également une interactivité beaucoup plus facile que bg et fg.

2
Hay