executa vários comandos e aguarda

0

Eu quero executar vários comandos simultaneamente e quando todos terminarem, execute outro grupo de comandos. comando1 & comando2 echo "command 1 and 2 finished" comando 3 & comando 4

    
por Ebrahim Poursadeqi 22.01.2018 / 09:52

3 respostas

2
command1 &
command2 &

wait
echo 'command1 and command2 have finished'

command3 &
command4 &

wait
echo 'command3 and command4 have finished'

A chamada para wait fará uma pausa no script até que todas as tarefas em segundo plano tenham terminado de executar.

Como alternativa (apenas "para sua informação"), dependendo se você deseja que o comando 1 e 2 sejam executados simultaneamente ou não (equivalentemente para o comando 3 e 4):

( command1; command2 ) &
echo 'command1 and command2 are running'
wait
echo 'command1 and command2 have finished'

No caso acima, command1 e command2 serão executados em segundo plano, mas não simultaneamente entre si.

Fazendo

command1 & command2
wait

é equivalente a

command1 &
command2
wait

... que funcionará, mas command2 não será executado em segundo plano e wait não será chamado até que command2 tenha terminado a execução.

    
por 22.01.2018 / 11:00
1

A resposta real da minha pergunta foi algo assim, um agradecimento especial de @ raman-sailopal

command1 & command2
wait
echo "command 1 and 2 has finished"
command3 & command4
    
por 22.01.2018 / 10:40
0
command1 & command2; echo "command1 & 2 complete" && command3 & command4; echo "command3 & 4 complete"

& executa comandos simultaneamente

; emula uma nova linha, ou seja, será executada após a conclusão

&& é executado assim que o trabalho anterior é concluído, desde que o trabalho anterior tenha sido bem-sucedido (ou seja, não retornou nenhum código de saída, mas 0)

    
por 22.01.2018 / 10:31