如何在没有后台进程的情况下并行运行shell命令?

时间:2013-07-07 08:42:41

标签: linux shell parallel-processing cpu core

我尝试以并行方式运行多个shell命令,而不使用“&”进行后台处理。 另外,我想将一个作业分配给一个CPU(以合理的方式) 例如,如果我有四个核心, 我想将cmd1分配给cmd4,如下所示:

CPU#1:cmd1

CPU#2:cmd2

CPU#3:cmd3

CPU#4:cmd4

请您告诉我这样做的方法吗?

我找到了“并行”命令,但我无法弄清楚如何使用它。 另外,我尝试了以下命令:./ cmd1 | ./cmd2 | ./cmd3 | ./cmd4 似乎有四个命令(cmd1到cmd4)并行运行,但我不确定如上所述将作业分配给核心。

谢谢!

对不起。我在linux上运行命令。

1 个答案:

答案 0 :(得分:3)

首先,如果您希望并行执行流程,则必须是后台作业。你有什么反对使用&

其次,您可以使用taskset将进程绑定到CPU核心或一组核心。例如:

taskset -c 0 cmd1 &
taskset -c 1 cmd2 &
taskset -c 2 cmd3 &
taskset -c 3 cmd4 &

但这可能不是一个好主意;如果一个进程长时间处于空闲状态,则其他进程不能使用它所分配的核心。