shell命令同步異步

問題:在 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)已啓動
父腳本:繼續執行中..
子腳本:正在運行..
父腳本:暫停執行,等待子腳本執行完畢..
子腳本:子腳本結束。腳本退出!
父腳本:子腳本已結束,父腳本繼續..
父腳本:父腳本執行結束。腳本退出!
相關文章
相關標籤/搜索