如何在没有后台进程的情况下并行运行shell命令?
问题描述:
我试图以并行方式运行几个shell命令,而不使用“&”进行后台进程。 另外,我想一个任务分配给一个CPU(以公平的方式) 举例来说,如果我有四个内核, 我希望把四种CMD1到CMD4如下:如何在没有后台进程的情况下并行运行shell命令?
CPU#1:CMD1
CPU#2:CMD2
CPU#3:CMD3
CPU#4:CMD4
可否请你让我知道如何做呢?
我找到了“并行”命令,但我无法弄清楚如何使用它。 另外,我试过以下命令:./cmd1 | ./cmd2 | ./cmd3 | ./cmd4 看起来好像四个命令(cmd1到cmd4)并行运行,但我不确定作业是否已分配给内核,如上所述。
谢谢!
对不起。我正在linux上运行命令。
答
首先,如果你想让进程并行执行,他们必须是后台作业。你有什么反对使用&
?
其次,您可以使用taskset
将进程绑定到CPU内核或一组内核。例如:
taskset -c 0 cmd1 &
taskset -c 1 cmd2 &
taskset -c 2 cmd3 &
taskset -c 3 cmd4 &
虽然这可能不是一个好主意,如果一个进程长时间处于空闲状态,其他3个进程不能使用分配给它的内核。
为什么你关心一个命令分配给哪个核心? – Johnsyweb
抱歉让您困惑。我只想把一份工作分配给一个核心。 (不需要将作业分配给特定内核) – freddy