Comment peut-on exécuter plusieurs programmes en arrière-plan avec une seule command?
J'ai essayé les commands ci-dessous, mais elles ne fonctionnent pas.
nohup ./script1.sh & && nohup ./script2.sh & -bash: syntax error near unexpected token '&&' nohup ./script1.sh & ; nohup ./script2.sh & -bash: syntax error near unexpected token ';'
Du sharepoint vue de la syntaxe du shell, &
sépare les commands comme ;
/ |
/ &&
… (bien sûr avec des sémantiques différentes). Donc c'est juste:
cmd1 & cmd2 & cmd3 &
La section de bash manpage intitulée Compound Commands a deux options qui fonctionneraient, listraient et grouperaient des commands.
Une command de groupe est une série de commands entourées d'accolades {}
. Une list est la même, entre parenthèses ()
. Les deux peuvent être utilisés pour mettre en arrière plusieurs commands à l'intérieur, et enfin pour mettre en arrière toute la collection en tant qu'set. La construction de list exécute des commands dans un sous-shell, de sorte que les affectations variables ne sont pas conservées.
Pour exécuter un groupe de commands:
{ command1 & command2 & } &
Vous pouvez également exécuter vos commands dans une list (sous-shell):
( command1 & command2 ) &
autrement:
$(command1 &) && command2 &