0

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

CPU #1:cmd1

CPU #2:cmd2

CPU #3:cmd3

CPU #4:cmd4

你能告诉我这样做的方法吗?

我找到了“并行”命令,但我不知道如何使用它。另外,我尝试了以下命令: ./cmd1 | ./cmd2 | ./cmd3 | ./cmd4 似乎有四个命令(cmd1 到 cmd4)并行运行,但我不确定这些作业是否已分配给核心,正如我在上面所说的那样。

谢谢!

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

4

1 回答 1

3

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

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

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

不过,这可能不是一个好主意;如果一个进程长时间处于空闲状态,则另外 3 个进程无法使用分配给它的核心。

于 2013-07-07T08:52:19.913 回答