GNU ParallelはBashスクリプトの出力を変更できますか?

GNU ParallelはBashスクリプトの出力を変更できますか?

各サブディレクトリには、74個のファイルを含むサブディレクトリがいっぱいのディレクトリがあります。 74個のファイルを分析し、すべてのディレクトリで並列に実行したいbashスクリプトがあります。

各サブディレクトリに移動してbashスクリプトを手動で実行すると、出力は完璧です。

bashスクリプトを並列に実行しようとすると、bashスクリプトが1つのファイルでのみ実行されるように見えます。

これはスクリプトを並列に実行するために使用するコードです。

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

奇妙なことは、上記と同じコードを使用して同じファイルで別のスクリプトを実行しており、問題が発生しないことです。

私が実行したいスクリプトは、awkとsedを使用した単純な書き込みと上書きといくつかの読み取りwhileループです。

私の並列コードに問題がありますか?それともどこで問題を見つける必要がありますか?

ありがとうございます!

編集1:

1) Script1.sh: Final_Fantasy.sh と単一の出力ファイル (Output1.txt) を空のディレクトリにコピーします。

2)dir.lstの各ディレクトリには、Output1.txtとFinal_Fantasy.shという2つのファイルしか含まれていません。

3)Final_Fantasy.shの最初の行は、Output1.txtを74個の別々のファイルに切り捨てます。

4)Final_Fantasyには、read-whileループで一度に74個のファイルのいずれかを編集できる複数行のawk、sed、およびgrepが含まれています。

5)一部の手順では、後で使用できるように出力を.txtファイルに書き込みます。

6)ループの最後のステップは、2つの.txtファイルを1つにcatまとめることです。

exit問題が発生した場合は、ループの問題を解決するためにファイルの最後にもう1つあります。次のようになります。

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

この時点で私が考えることができる唯一のことは、1)HPCは私のコントロールの範囲を超えているということです。 2)exitすべてのファイルを分析した後ではなく、ループの最初の繰り返しの後に楽しく行動して終了します。

編集2)私のローカルコンピュータでこの問題を並列に再現することはできません。これにより、これは奇妙なHPC問題であると考えられます。そうは思いません。私は制御権を持っています。

parallel編集3)問題が発生した場所を確認できるように、現在実行中のジョブを段階的に出力する方法はありますか?

ベストアンサー1

parallelその引数を直接実行します。シェルを使用しないと、シェル操作を実行できません。sh -c後ろに入れてくださいparallel

更新:上記はmoreutils並列処理にのみ適用され、この質問に関連するGNU並列処理には適用されません。

おすすめ記事