Problemas de simultaneidade com o GNU paralelo

2

Meus scripts estão tendo problemas para executar corretamente as coisas no GNU paralelo.

Eu tenho um sub_script como (todas essas versões são simplificadas):

#! /bin/bash   
input=$1  
# input is a date in YYYYMMDD format  
mkdir -p $input

cd $input  
filename=$input'.txt'  
echo 'line1' > $filename  
echo 'The date is: '$input >> $filename

Então eu tenho um arquivo multi.sh assim:

cd /home/me/scripts; ./sub_script 20141001   
cd /home/me/scripts; ./sub_script 20141002   
cd /home/me/scripts; ./sub_script 20141003   
cd /home/me/scripts; ./sub_script 20141004   
cd /home/me/scripts; ./sub_script 20141005    

Eu estou tentando usar o GNU paralelo para executar todas estas funções com múltiplos núcleos usando este comando

parallel -j 3 --delay 1 < multi.sh 

para rodar em 3 núcleos. Tentei implementar um atraso de 1 segundo entre a execução de cada linha para evitar problemas, mas isso não funciona.

Estou tendo problemas com os novos diretórios que contêm arquivos impróprios. Eu acho que isso só acontece quando há mais linhas em multi.sh do que os núcleos especificados por -j , e isso só acontece esporadicamente (nem sempre é reproduzível). Posso executar novamente a linha parallel 2 vezes seguidas e obter resultados diferentes. Às vezes, posso obter 20141002.txt arquivos no diretório 20141005 , em vez dos arquivos 20141005.txt . Outras vezes, posso obter apenas os arquivos 20141002.txt no diretório 201005 .

Existe alguma sugestão sobre como posso corrigir isso? O GNU paralelo é o preferido, mas também posso testar outros comandos.

    
por Jake112 19.11.2014 / 01:31

1 resposta

1

Por que o batchfile extra, se você usar em paralelo?

parallel -j3 --delay 1 ./sub_script ::: 20141001 20141002 20141003 20141004 20141005
    
por 19.11.2014 / 12:01