A Paralela GNU Altera a Saída de um Script Bash?

2

Eu tenho um diretório que é preenchido com subdiretórios e em cada subdiretório 74 arquivos. Eu tenho script bash que analisa os 74 arquivos e deseja executá-lo em paralelo em todos os diretórios.

Quando entro em cada subdiretório e executo manualmente o script, a saída é perfeita.

Ao tentar executar o script bash em paralelo, o script bash parece ser executado apenas em um arquivo.

Aqui está o código que estou usando para executar o script em paralelo

parallel "cd {} && bash Final_Fantasy.sh" :::: dir.lst

O mais estranho é que tenho outro script que é executado nos mesmos arquivos, usando o mesmo código acima, e resulta em 0 problemas.

O script que estou tentando executar é apenas um pouco simples de escrever e sobrescrever usando o awk e o sed com alguns ciclos de leitura while.

Há algo errado com meu código paralelo ou onde devo procurar problemas?

Obrigado!

Editar 1:

1) Script1.sh: Copie Final_Fantasy.sh e um único arquivo de saída (Output1.txt) em um diretório vazio.

2) Cada diretório encontrado em dir.lst agora contém apenas 2 arquivos, Output1.txt e Final_Fantasy.sh

3) A primeira linha do Final_Fantasy.sh corta o Output1.txt em 74 arquivos separados.

4) Final_Fantasy inclui várias linhas de awk, sed e grep para editar um dos 74 arquivos por vez, todos dentro de um ciclo de leitura.

5) Para algumas das etapas, escrevo a saída para um arquivo .txt para uso posterior.

6) Os passos finais do loop é pegar dois arquivos .txt e cat juntos.

Eu também tenho um exit no final do arquivo, pois eu esperava solucionar o loop se algo desse errado. Parece o seguinte:

done < $filename2 done < $filename1 exit more code that works

A única coisa que posso pensar neste momento é 1) algo além do meu controle com o HPC. 2) exit se comportando de forma engraçada e saindo após a primeira iteração do loop em vez de sair depois que todos os arquivos foram analisados.

Espero que isso ajude. Obrigado mais uma vez a todos!

Editar 2) Eu não consigo reproduzir este problema na minha máquina local, paralelamente e tudo, o que me leva a acreditar que é um problema estranho da HPC que eu não acho que eu tenho controle sobre .

Editar 3) Existe uma maneira de eu ter parallel output o que ele está fazendo passo a passo para que eu possa ver onde o problema está ocorrendo?

    
por AMB 06.10.2018 / 00:15

1 resposta

0

parallel executa seus argumentos diretamente. Você não pode fazer coisas de shell, a menos que você use um shell. Coloque sh -c logo após parallel .

Atualização: O acima só é verdade para moreutils parallel, não GNU parallel, sobre o qual esta questão é sobre.

    
por 06.10.2018 / 03:56