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