GNU Parallelでスクリプトが正しく実行されるのに問題があります。
同様のものがありますsub_script
(これらはすべて実際に単純化されたバージョンです)。
#! /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
次に、次の multi.sh ファイルがあります。
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
このコマンドを使用して、GNUを使用して複数のコアを介してこれらすべての機能を並列に実行しようとしています。
parallel -j 3 --delay 1 < multi.sh
3つのコアで実行されます。問題を回避するために、各行の実行間に1秒の遅延を実装しようとしましたが、機能しませんでした。
無効なファイルを含む新しいディレクトリの使用に問題があります。これmulti.sh
は、によって指定されたコア数よりも多くの行がある場合にのみ発生し、時々発生します-j
(常に再現可能ではありません)。parallel
行を連続して2回再実行すると、他の結果が得られます。場合によっては、ファイルの代わりにディレクトリ20141002.txt
にファイルをインポートすることもあります。それ以外の場合は、ディレクトリからのみファイルをインポートできます。20141005
20141005.txt
20141002.txt
201005
この問題を解決する方法に関する提案はありますか? GNU パラレルが優先されますが、他のコマンドも試すことができます。
答え1
並列性を使用する場合、追加のバッチファイルが必要なのはなぜですか?
parallel -j3 --delay 1 ./sub_script ::: 20141001 20141002 20141003 20141004 20141005