shell命令同步异步

问题:在 shell 下有 A B C D 四个命令,需要先执行 A 再执行 B C 最后执行 D 

  其中, B C 耗时较多, 但是,互不干扰,可以同步执

子进程 和 wait

./A

./B &  # 设为子进程

./C &

wait

./D

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

 

转载于:https://my.oschina.net/u/2000675/blog/1811006

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值