首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GNU并行交替作业

GNU并行交替作业
EN

Unix & Linux用户
提问于 2019-04-05 11:18:42
回答 3查看 136关注 0票数 1

我想要运行一个任务,其中我指定了两个命令,它们将以不同参数交替的方式运行。例如:

代码语言:javascript
复制
1. exec --foo $inputfile1 $inputfile.outfile1
2. exec --bar $inputfile2 $inputfile.outfile2
3. exec --foo $inputfile3 $inputfile.outfile3
4. exec --bar $inputfile4 $inputfile.outfile4

我也许可以通过配置两个并行命令或指定两个输入来逃避,但是我需要一些更通用的东西。这些文件将使用管道“查找”命令指定。

编辑:我对一个动作的命令如下所示:

代码语言:javascript
复制
find . -name 'somefiles*' -print0 | parallel -0 -j10 --verbose 'exec --foo {} {.}.outfile' 

我只是不知道如何在两个命令之间交替执行此操作。

因此,基本上,我需要并行的-j10是使用foo参数运行其中的5个命令,并在单个文件集上运行其中5个带有bar参数的命令。我也许可以不让它交替,但是我想要并行处理它正好是5/5的分裂,这样我就不会用更多的foos或者更多的酒吧来结束了

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2019-04-05 11:50:44

您可以首先将所有参数放入文件中,然后使用

parallel -a filename command

例如:

代码语言:javascript
复制
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 

然后运行命令:

代码语言:javascript
复制
parallel -a /tmp/a evince
票数 2
EN

Unix & Linux用户

发布于 2019-04-05 11:33:56

代码语言:javascript
复制
exec --foo $inputfile1 $inputfile.outfile1 & \
exec --bar $inputfile2 $inputfile.outfile2 & \
exec --foo $inputfile3 $inputfile.outfile3 & \
exec --bar $inputfile4 $inputfile.outfile4 &
票数 1
EN

Unix & Linux用户

发布于 2019-05-29 21:35:00

这应该在--foo--bar之间交替进行:

代码语言:javascript
复制
find . -name 'somefiles*' -print0 |
  parallel -0 -j10 --verbose 'exec {= $_=seq() % 2 ? "--foo" : "--bar" =} {} {.}.outfile' 
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/510694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档