2013-07-07 123 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

相關問題