Linux中wait用法注意

  今日在编写shell脚本中,需要使用后台运行子进程,达到并发的目的。为了能够让主进程等待子进程的结束,使用了wait命令,以下是局部模拟代码

<pre class="plain" name="code">sql="select ... from tb_test"
echo $sql | mysql -h"$ip" -P"$port" -u"$usr" -p"$pwd" "$db_name" -s | while read line
do
    value=`echo $line | awk '{print $2}'`
    $basepath/test.sh $value &
done 

wait

 


  但是在实际运行中我发现,主进程的运行时间不到1s,在子进程尚未完成只是便已经结束。

  通过咨询,才明白,使用管道生成的while,是无法进行并发管理的。我理解为他新开了一个进程,他所生成的变量或者子进程,都无法由外部直接使用,要想做到并发管理,应该这样写

sql="select ... from tb_test"
echo $sql | mysql -h"$ip" -P"$port" -u"$usr" -p"$pwd" "$db_name" -s > tmp
while read line
do
    value=`echo $line | awk '{print $2}'`
    $basepath/test.sh $value &
done < tmp

wait


以后将继续更新对于wait的使用经验与细节

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值