Sua configuração atual está executando seus comandos sequencialmente. O primeiro é executado, e completa , permitindo que o segundo seja iniciado. O segundo nunca acaba, então o terceiro nunca tem a chance de começar.
Tente isto:
foo.sh >foo.out 2>foo.err &
dog.sh >dog.out 2>dog.err &
cat.sh >cat.out 2>cat.err &
Isso dirá que cada comando deve ser executado em segundo plano e enviar suas informações de saída e erro para os arquivos. Quando um comando é executado em segundo plano, ele se desconecta da sessão atual e permite que o próximo comando seja executado. É importante colocar o e comercial ( &
) como o último caractere da linha. Caso contrário, pode não ser reconhecido corretamente.
Como alternativa, faça com que cada um dos seus scripts de shell execute o script .php
associado que você está aparentemente chamando com a mesma semântica descrita acima. Nesse cenário, seu foo.sh
pode conter:
#!/bin/bash
php foo.php >foo.out 2>foo.err &
Finalmente, se você precisar de uma verdadeira operação paralela, confira o Paralelo GNU .
Nota: Se você realmente quer que a saída vá para a tela / terminal, você pode deixar o redirecionamento de saída:
foo.sh &
Lembre-se, porém, que rodar múltiplos comandos ao mesmo tempo pode causar saída confusa (você pode agora saber qual saída ou erros vieram de qual comando), e se você sair, a saída não tem para onde ir.