我是靠谱客的博主 快乐蜗牛,最近开发中收集的这篇文章主要介绍SHELL中的异步执行异步执行,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

异步执行

有时我们希望同时执行多项任务,这其中涉及到父脚本以及多个子脚本的加载问题,子脚本可以在父脚本运行时执行其他额外的任务。但是,当一系列脚本以这种方式运行时,保证父脚本与子脚本的协调一致就会是一个问题。试想下这样一种情况,如果父脚本与子脚本互相依赖,一个脚本必须等待另一个脚本任务完成才能继续自己的任务。

针对以上情形,bash提供了一个内置的命令来帮助管理异步执行。wait命令可以让父脚本暂停,直到指定的进程(比如子脚本)结束。

wait命令

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

最后

以上就是快乐蜗牛为你收集整理的SHELL中的异步执行异步执行的全部内容,希望文章能够帮你解决SHELL中的异步执行异步执行所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部