web-dev-qa-db-fra.com

lancez un script shell et mettez-le immédiatement en arrière-plan, mais conservez la possibilité d'inspecter sa sortie

Comment puis-je exécuter un script Shell et le mettre immédiatement en arrière-plan?

Ce serait bien si je pouvais mettre en avant le processus trop tard.

PS Ce serait vraiment bien si vous pouviez aussi me montrer comment "envoyer" le processus en arrière-plan dans un écran GNU qui peut avoir été initialisé ou non.

Pour «mettre en arrière-plan» un processus lorsque vous le démarrez

Ajoutez simplement un esperluette (&) après la commande.

Si le programme écrit dans la sortie standard, il écrira quand même sur votre console/terminal. 

Pour mettre en avant le processus, utilisez simplement la commande fg.

(Vous pouvez voir une liste de tâches en arrière-plan avec jobs.)

par exemple:

sh -c 'sleep 3 && echo I just woke up' & jobs

Pour mettre en arrière-plan un processus en cours d'exécution

Si vous avez déjà lancé le processus au premier plan mais que vous souhaitez le déplacer en arrière-plan, vous pouvez procéder comme suit:

  1. Appuyez sur Ctrl + z pour mettre le processus en cours en veille et revenir à votre shell. (Ce processus sera suspendu jusqu'à ce que vous envoyiez un autre signal.)
  2. Exécutez la commande bg pour reprendre le processus, mais exécutez-le en arrière-plan au lieu du premier plan.
16
Jon Wolski

Une autre méthode consiste à utiliser la commande Nohup avec & à la fin de la ligne.

Quelque chose comme ça

Nohup whatevercommandyouwant whateverparameters &

Cela l'exécutera en arrière-plan et enverra sa sortie dans un fichier Nohup.log.

2
israelss