Linux bash - como executar uma lista de arquivos binários gerados a partir de outro script?

1

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?

    
por motam79 03.06.2018 / 21:09

2 respostas

1

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.

    
por 04.06.2018 / 13:17
1

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

    
por 03.06.2018 / 21:38

Tags