Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与预定义的顺序优先级并行运行bash作业_Bash_Shell_Gnu Parallel - Fatal编程技术网

与预定义的顺序优先级并行运行bash作业

与预定义的顺序优先级并行运行bash作业,bash,shell,gnu-parallel,Bash,Shell,Gnu Parallel,我想在一台超过2个内核的机器的2个内核上运行3个作业(A、B、C)。我知道: 运行时(A)>运行时(C) 运行时(B)>运行时(C) 在Bash 4.3(2014年发布)或更高版本中,运行时(A)>运行时(B)或运行时(A)是否容易,事先还不知道: A & B & wait -n # wait for any child to finish C & wait # for everyone to finish 只需告诉GNU Parallel它可以使用2个内核: para

我想在一台超过2个内核的机器的2个内核上运行3个作业(A、B、C)。我知道:

运行时(A)>运行时(C)

运行时(B)>运行时(C)

在Bash 4.3(2014年发布)或更高版本中,运行时(A)>运行时(B)或运行时(A)是否容易,事先还不知道:

A &
B &
wait -n # wait for any child to finish
C &
wait # for everyone to finish

只需告诉GNU Parallel它可以使用2个内核:

parallel -j 2 ::: jobA jobB jobC

请注意,作业将按您指定的顺序运行,但输出的顺序可能不同。如果这是一个问题,请添加
-k
参数以保持输出有序。

欢迎使用堆栈溢出。该平台面向软件开发人员。您忘了在问题中添加您自己试图解决的问题。@Cyrus鼓励您尝试,但不是必需的。
sleep 5;回声“A”和睡眠10;echo“B”和wait-n和sleep 5;echo“C”和wait运行时间为20秒,我预计为10秒。A和B是按顺序执行的,不是吗?
sleep 5执行该命令,然后等待,因此您的示例存在错误。尝试编写一个名为
a
的脚本或函数,并将
sleep5
放入其中,然后使用我给出的代码。谢谢,你说得对。虽然我将使用GNU并行解决方案(稍微易于扩展和维护),但您的解决方案非常漂亮,我非常喜欢!太棒了,这很有效,gnu parallel尊重秩序是有道理的。我之前拒绝并行,因为我的印象是输出的顺序和执行的顺序相同。但是,我想只有当不同线程上的作业在同一时间结束时才会出现这种情况。很高兴它对你有用——请点击点击计数旁边的嘀嗒/支票来接受它。非常感谢。