Parallelism
GNU 並行交替作業
我想執行一個任務,在其中我指定兩個命令,這些命令將以不同的參數交替執行。例如:
1. exec --foo $inputfile1 $inputfile.outfile1 2. exec --bar $inputfile2 $inputfile.outfile2 3. exec --foo $inputfile3 $inputfile.outfile3 4. exec --bar $inputfile4 $inputfile.outfile4
我可能可以通過指定兩個並行命令或指定兩個輸入來擺脫困境,但我需要更通用的東西。將使用流水線“查找”命令指定文件。
編輯:我的一項操作命令如下所示:
find . -name 'somefiles*' -print0 | parallel -0 -j10 --verbose 'exec --foo {} {.}.outfile'
我只是不知道如何在兩個命令之間以交替方式執行此操作
所以基本上我需要並行 -j10 做的是在一組文件上執行 5 個帶有 foo 參數的命令和 5 個帶有 bar 參數的命令。我可能會僥倖避免它不交替,但我希望平行處理它正好是 5/5 分割,所以我不會以更多的 foos 或更多的小節結束
您可以先將所有參數放在一個文件中,然後使用
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
exec --foo $inputfile1 $inputfile.outfile1 & \ exec --bar $inputfile2 $inputfile.outfile2 & \ exec --foo $inputfile3 $inputfile.outfile3 & \ exec --bar $inputfile4 $inputfile.outfile4 &