Quando você inicia e executa comandos em segundo plano a partir de um shell script adicionando um & ao comando, eles serão executados quase que completamente em paralelo porque o script não precisará esperar até que o comando conclui antes de executar a próxima linha no script.
#!/bin/bash
/bin/first
/bin/p1 &
/bin/p2 &
/bin/p3
Observação: quando o script conclui p1 e p2 ainda pode estar sendo executado em segundo plano!
Para aliviar que seu script se torne um pouco mais complexo, você precisará capturar os PIDs e wait
para eles:
#!/bin/bash
/bin/first
/bin/p1 &
PID1=$!
/bin/p2 &
PID2=$!
/bin/p3 &
PID3=$!
for PIDS in $PID1 $PID2 $PID3 ;
do
wait $PIDS
done
Esse loop só é necessário se você quiser fazer algum tratamento de erros e verificar o código de saída dos programas executados em paralelo. Caso contrário, um simples wait
sem nenhum argumento também aguardará que todos os processos filhos sejam finalizados.