java shell 异步执行_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)已启动

父脚本:继续执行中..

子脚本:正在运行..

父脚本:暂停执行,等待子脚本执行完毕..

子脚本:子脚本结束。脚本退出!

父脚本:子脚本已结束,父脚本继续..

父脚本:父脚本执行结束。脚本退出!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值