shell檔案中,多程序執行

2021-06-20 10:57:20 字數 1539 閱讀 3959

一直苦惱乙個問題:shell程式設計中,當乙個任務完成時,接下來可以同時有兩個任務可以執行,這兩個任務互不影響。所以想當第乙個任務完成後,同時啟動後面的兩個任務,不知到shell中如何同時啟動。

今天解決了:使用後台執行的方式 &。

舉個例子說明比較好。

有乙個總執行的all.sh,有三個任務shell,分別是aa.sh, bb.sh,cc.sh。

當執行玩aa.sh後,同時執行bb.sh,cc.sh。

all.sh

[html]view plain

copy

print?

#!/bin/bash  

sh aa.sh  

sh bb.sh &  

sh cc.sh &  

aa.sh

[html]view plain

copy

print?

#!/bin/bash  

echo 'start'  

sleep 10  

echo 'end'  

bb.sh

[html]view plain

copy

print?

#!/bin/bash  

echo 'bb start '  

sleep 10  

echo 'bb end'  

cc.sh

[html]view plain

copy

print?

#!/bin/bash  

echo 'cc start '  

sleep 10  

echo 'cc end'  

執行 all.sh就實現了這種功能。

有了這種方式,我們就可以簡單的進行效能測試了。

例如一種情形:100個人同時訪問乙個頁面10次(併發):

[html]view plain

copy

print?

#!/bin/bash  

echo 'start'  

echo 'end'  

function hello()  

do  

sleep 1  

echo "$----------------------------$j"   

#wget www.******.com  

done  

}  for i in   

do  

hello $i &   

done  

等待併發程式都結束之後,再執行後面的程式,使用wait命令

[html]view plain

copy

print?

sh aa.sh &  

p1=$!  

sh bb &  

p2=$!  

wait $p1 && wait $p2 

shell執行 shell多程序執行

shell在linux中,是使用者和kernel溝通的橋梁,採用c編寫,既是一種命令語言,也是一種解釋型指令碼語言,我們常寫的ls,grep就是基本的shell命令。cat test.txt grep abc abc.txt 將test.txt所有包含abc的行提取到abc.txt中多個處理都這樣來...

shell多程序執行

shell在linux中,是使用者和kernel溝通的橋梁,採用c編寫,既是一種命令語言,也是一種解釋型指令碼語言,我們常寫的ls,grep就是基本的shell命令。shell指令碼是將要執行的命令按一定順序寫成的乙個文字檔案,最近遇到乙個需求,要將一定數量的命令快速執行,而每次執行都需要一定的時間...

shell 併發多程序同時執行

shell 併發多程序同時執行 複製 1 bin bash 2 3 send thread num 13 設定程序數。4 tmp fifofile tmp fifo 指令碼執行的當前程序id號作為檔名 5 mkfifo tmp fifofile 新建乙個隨機fifo管道檔案 6 exec 6 tmp...