Eu tenho script incluindo vários comandos. Como agrupar comandos para execução em conjunto (quero criar vários grupos de comandos. Em cada grupo, os comandos devem ser executados em paralelo (ao mesmo tempo).) Os grupos devem ser executados sequencialmente, aguardando a conclusão de um grupo antes de iniciar o próximo grupo) ... ie
#!/bin/bash
command #1
command #2
command #3
command #4
command #5
command #6
command #7
command #8
command #9
command #10
como posso executar a cada 3 comandos para obter? Eu tentei:
#!/bin/bash
{
command #1
command #2
command #3
} &
{
command #4
command #5
command #6
} &
{
command #7
command #8
command #9
}&
command #10
Mas isso não funcionou corretamente (quero executar os grupos de comandos em paralelo ao mesmo tempo. Também preciso aguardar o primeiro grupo terminar antes de executar o próximo grupo)
O script está saindo com uma mensagem de erro!
Respostas:
Os comandos dentro de cada grupo são executados em paralelo e os grupos são executados seqüencialmente, cada grupo de comandos paralelos aguardando a conclusão do grupo anterior antes de iniciar a execução.
A seguir, é apresentado um exemplo de trabalho:
Assuma 3 grupos de comandos como no código abaixo. Em cada grupo, os três comandos são iniciados em segundo plano com
&
.Os 3 comandos serão iniciados quase ao mesmo tempo e executados em paralelo enquanto o script
waits
for concluído.Após a saída de todos os três comandos no terceiro grupo,
command 10
será executado.fonte
Deve funcionar (cada componente tripleto individual será executado sequencialmente, mas os grupos hte serão executados em paralelo). Você provavelmente não deseja que o shell pai saia antes que os grupos terminem - daí o
wait
.fonte
wait
.