問題:在 shell 下有 A B C D 四個命令,須要先執行 A 再執行 B C 最後執行 D shell
其中, B C 耗時較多, 可是,互不干擾,能夠同步執bash
子進程 和 wait異步
./Aasync
./B & # 設爲子進程code
./C &進程
wait同步
./Dit
wait加參數是等待某個進程結束,不加參數是等待以上全部後臺進程結束後臺
例:變量
主腳本:
#!/bin/bash # # 異步執行(wait)使用樣例-父腳本 # echo "父腳本:啓動子腳本.." ./async-child & # 經過將shell參數 $! 賦給pid變量,以記錄子進程的進程ID pid=$! echo "父腳本:子腳本(PID=${pid})已啓動" echo "父腳本:繼續執行中.." sleep 2 echo "父腳本:暫停執行,等待子腳本執行完畢.." wait ${pid} echo "父腳本:子腳本已結束,父腳本繼續.." echo "父腳本:父腳本執行結束。腳本退出!"
子腳本:
#!/bin/bash # # 異步執行(wait)使用樣例-子腳本 # echo "子腳本:正在運行.." sleep 5 echo "子腳本:子腳本結束。腳本退出!"
結果:
[fbap:/home/fbap/usertmp]>./async-parent.sh 父腳本:啓動子腳本.. 父腳本:子腳本(PID=42620)已啓動 父腳本:繼續執行中.. 子腳本:正在運行.. 父腳本:暫停執行,等待子腳本執行完畢.. 子腳本:子腳本結束。腳本退出! 父腳本:子腳本已結束,父腳本繼續.. 父腳本:父腳本執行結束。腳本退出!