異なるパラメータを使用して交互に実行される2つのコマンドを指定するジョブを実行したいと思います。たとえば、
1. exec --foo $inputfile1 $inputfile.outfile1
2. exec --bar $inputfile2 $inputfile.outfile2
3. exec --foo $inputfile3 $inputfile.outfile3
4. exec --bar $inputfile4 $inputfile.outfile4
2つの並列コマンドを指定するか、2つの入力を指定すると問題が解決する可能性がありますが、より一般的なものが必要です。ファイルはパイプライン「find」コマンドを使用して指定されます。
編集:私の作業コマンドの1つは次のとおりです。
find . -name 'somefiles*' -print0 | parallel -0 -j10 --verbose 'exec --foo {} {.}.outfile'
2つのコマンドを交互に実行する方法がわかりません。
したがって、デフォルトでParallel-j10で実行する必要があるのは、ファイルセットでfooパラメータを使用して5つのコマンドを実行し、barパラメータを使用してそのうち5つを実行することです。交代せずに外れることもありますが、正確に5/5分割に並列化して、より多くのfoosや棒で終わらないようにしたいと思います。
答え1
まず、すべてのパラメータをファイルに入れてから使用できます。
parallel -a filename command
たとえば、
echo "--fullscreen $(find /tmp -name *MAY*.pdf) $(find /tmp -name *MAY*.pdf).out" >> /tmp/a
echo "--page-label=3 $(find /tmp -name *MAY*.pdf) $(find /tmp -name *JUNE*.pdf).out" >> /tmp/a
echo "--fullscreen $(find /tmp -name *MAY*.pdf) $(find /tmp -name *JULY*.pdf).out" >> /tmp/a
次に、次のコマンドを実行します。
parallel -a /tmp/a evince
答え2
exec --foo $inputfile1 $inputfile.outfile1 & \
exec --bar $inputfile2 $inputfile.outfile2 & \
exec --foo $inputfile3 $inputfile.outfile3 & \
exec --bar $inputfile4 $inputfile.outfile4 &
答え3
これは--foo
、次を交互に実行する必要があります--bar
。
find . -name 'somefiles*' -print0 |
parallel -0 -j10 --verbose 'exec {= $_=seq() % 2 ? "--foo" : "--bar" =} {} {.}.outfile'