问题:在 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)已启动 父脚本:继续执行中.. 子脚本:正在运行.. 父脚本:暂停执行,等待子脚本执行完毕.. 子脚本:子脚本结束。脚本退出! 父脚本:子脚本已结束,父脚本继续.. 父脚本:父脚本执行结束。脚本退出!