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

问题描述 投票:0回答:1

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

CPU #1:cmd1

CPU #2:cmd2

CPU #3:cmd3

CPU #4:cmd4

您能让我知道如何做到这一点吗?

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

我正在 Linux 上运行命令。

linux shell parallel-processing cpu-cores
1个回答
3
投票

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

&
的理由是什么?

其次,您可以使用

taskset
将进程绑定到一个 CPU 核心或一组核心。例如:

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

但这可能不是一个好主意;如果一个进程长时间空闲,其他 3 个进程将无法使用分配给它的核心。

© www.soinside.com 2019 - 2024. All rights reserved.