Usando o GNU Parallel:
Pergunta 1:
list_generator_program | parallel -j1
Pergunta 2:
list_generator_program | parallel
Isso executará um trabalho por núcleo de CPU em paralelo.
Eu tenho um script que gera lista de arquivos binários a serem executados:
\home\joe\bin\script1
\home\joe\bin\script2
\home\joe\bin\script3
..
Pergunta 1:
Como posso executar todos esses arquivos um por um na linha de comando? Uma maneira de fazer isso é catar a lista de arquivos binários para um arquivo temporário temp.sh
e executar o arquivo .sh
. É possível fazer isso sem criar um arquivo .sh
temporário?
Pergunta 2: Como posso executar todos esses arquivos em paralelo?
antislashes no seu exemplo devem ser barras, eu acho
yarl@nb$ pwd
/tmp
yarl@nb$ cat list
#!/bin/sh
echo /tmp/foo
echo /tmp/bar
yarl@nb$ cat foo
#!/bin/sh
echo I say foo
sleep 2
echo I say foo
yarl@nb$ cat bar
#!/bin/sh
echo And I say bar
sleep 2
echo And I say bar
yarl@nb$ cat parallel
#!/bin/sh
./list | while read cmd; do
$cmd &
done
Para executar:
./list | sh
em paralelo:
./parallel
Observe que, se "listar" listar n arquivos, não serão executados trabalhos paralelamente. Se você quiser controlar isso, use um contador ou gnu paralelo ou algo assim. veja link