GNU Parallelでジョブ番号を渡すには?

GNU Parallelでジョブ番号を渡すには?

次の並列コマンドを使用して、スクリプトから基本スクリプトに変数を渡します。

./script1 | parallel -u --jobs 3 "./script2 {}"

の2番目のパラメータにジョブ番号を渡すにはどうすればよいですか./script2

それはまるで

./script1 | parallel -u --jobs 3 "./script2 {} {}" ::: {1..3}

しかし、最初のものはから来なければ{}なりません./script1

私はパラメータの組み合わせを望んでいません。代わりに実行中のジョブは、次のようにする必要があります。

./script2 var1 1
./script2 var2 2
./script2 var3 3
./script2 var4 1
./script2 var5 2
./script2 var6 3
./script2 var7 1

./script2' writes to filesfile1.txt ,files2.txt , andfile3.txt where the number is{1..3}`またはジョブ番号を想像してください。

1つのスクリプトだけがそのファイルに書き込んでいることを確認したいと思います。つまり、3 つの並列ジョブが 3 つの指定されたファイルに書き込まれます。

ベストアンサー1

あなたは役職番号ではなく役職{%}を探している可能性があります。コイン投入口数字。

LC_ALL=C seq 10 -0.1 1 | shuf |
  parallel --lb 'echo Job {} grabs {%}; sleep {}; echo Job {} releases {%}'

番号が解放されたら、次のタスクでどのように番号を取得するかをご覧ください。したがって、並列に実行される2つのジョブは同じ{%}値を持ちません。

これはGNU Parallel 2018(http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.htmlまたはhttps://doi.org/10.5281/zenodo.1146014)。

おすすめ記事