GNU parallelを使用してスクリプトの多くのインスタンスを実行しようとしていますが、スクリプトは引数を取りません。
「parallel foo.sh」を実行すると、次のようになります。
parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
10回実行したい場合、次の構文が機能します。
parallel -n0 foo.sh ::: {1..10}
parallel
にはある程度の長さの入力シーケンス(::: {1..10}
)が必要であり、入力シーケンス(-n0
)の内容を無視する必要がある場合は、その長さのみを考慮します。
元のコマンドparallel foo.sh
には、必要な並列度を示す入力シーケンスが含まれていません。不可解な警告は、parallel
が入力シーケンスのターミナルをリッスンし始めること、そしてこれはおそらくあなたが望むものではないことを伝えています。
これがチュートリアルの例です:
seq 10 | parallel -n0 my_command my_args
使い方:
parallel
は常にどこかから入力シーケンスを取ります。 :::
ORファイルまたはパイプなどのファイルのようなソースからの改行で区切られたシーケンスが前に付いた、インラインのスペース区切りシーケンスです。この例では、入力シーケンスはパイプ。seq 10
は、改行で区切られた1から10の数字のシーケンスを生成します。-n0
オプションは、入力シーケンスの値を無視するようにparallelに指示します。気になるのはシーケンスの長さであり、その内容ではありません。数字が使用されていない場合でも、コマンドは10回実行されます。もう一つの例:
parallel -n0 echo -n 'x' ::: {1..5}
使い方:
{1..5}
は、スペースで区切られた1から5までの数字のシーケンスを生成します。-n0
はシーケンス値を無視します(代わりに文字列'x'
を毎回エコーします)。xxxxx
と比較:
parallel echo -n ::: {1..5}
使い方:
{1..5}
は、スペースで区切られた1から5までの数字のシーケンスを生成します。echo
への引数として使用されます。注文は保証されません。43215
。任意の順序である可能性があります。