2013-07-07 119 views
0

我试图以并行方式运行几个shell命令,而不使用“&”进行后台进程。 另外,我想一个任务分配给一个CPU(以公平的方式) 举例来说,如果我有四个内核, 我希望把四种CMD1到CMD4如下:如何在没有后台进程的情况下并行运行shell命令?

CPU#1:CMD1

CPU#2:CMD2

CPU#3:CMD3

CPU#4:CMD4

可否请你让我知道如何做呢?

我找到了“并行”命令,但我无法弄清楚如何使用它。 另外,我试过以下命令:./cmd1 | ./cmd2 | ./cmd3 | ./cmd4 看起来好像四个命令(cmd1到cmd4)并行运行,但我不确定作业是否已分配给内核,如上所述。

谢谢!

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

+0

为什么你关心一个命令分配给哪个核心? – Johnsyweb

+0

抱歉让您困惑。我只想把一份工作分配给一个核心。 (不需要将作业分配给特定内核) – freddy

回答

3

首先,如果你想让进程并行执行,他们必须是后台作业。你有什么反对使用&

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

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

虽然这可能不是一个好主意,如果一个进程长时间处于空闲状态,其他3个进程不能使用分配给它的内核。

+0

命令“./cmd1 | ./cmd2 | ./cmd3 | ./cmd4”将所有命令(cmd1至cmd4)作为后台进程吗? – freddy

+0

除了最后一个。 cmd4停留在前台,其stdout打印到终端。 – Joni

相关问题