Parallelism

GNU 並行交替作業

  • May 29, 2019

我想執行一個任務,在其中我指定兩個命令,這些命令將以不同的參數交替執行。例如:

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 &

引用自:https://unix.stackexchange.com/questions/510694