我尝试以并行方式运行多个shell命令,而不使用“&”进行后台处理。 另外,我想将一个作业分配给一个CPU(以合理的方式) 例如,如果我有四个核心, 我想将cmd1分配给cmd4,如下所示:
CPU#1:cmd1
CPU#2:cmd2
CPU#3:cmd3
CPU#4:cmd4
请您告诉我这样做的方法吗?
我找到了“并行”命令,但我无法弄清楚如何使用它。 另外,我尝试了以下命令:./ cmd1 | ./cmd2 | ./cmd3 | ./cmd4 似乎有四个命令(cmd1到cmd4)并行运行,但我不确定如上所述将作业分配给核心。
谢谢!
对不起。我在linux上运行命令。
答案 0 :(得分:3)
首先,如果您希望并行执行流程,则必须是后台作业。你有什么反对使用&
?
其次,您可以使用taskset
将进程绑定到CPU核心或一组核心。例如:
taskset -c 0 cmd1 &
taskset -c 1 cmd2 &
taskset -c 2 cmd3 &
taskset -c 3 cmd4 &
但这可能不是一个好主意;如果一个进程长时间处于空闲状态,则其他进程不能使用它所分配的核心。