《shell中父进程子进程即异步执行》由会员分享,可在线阅读,更多相关《shell中父进程子进程即异步执行(2页珍藏版)》请在金锄头文库上搜索。
1、shell中父进程子进程即异步执行SHELL中的异步执行异步执行有时我们希望同时执行多项任务,这其中涉及到父脚本以及多个子脚本的加载问题,子脚本可以在父脚本运行时执行其他额外的任务。但是,当一系列脚本以这种方式运行时,保证父脚本与子脚本的协调一致就会是一个问题。试想下这样一种情况,如果父脚本与子脚本互相依赖,一个脚本必须等待另一个脚本任务完成才能继续自己的任务。针对以上情形,bash提供了一个内置的命令来帮助管理异步执行。wait命令可以让父脚本暂停,直到指定的进程(比如子脚本)结束。wait命令下面通过两个例子,演示wait命令的使用:#!/bin/bash# 异步执行(wait)使用样例-
2、父脚本#echo父脚本:启动子脚本./async-child&#通过将shell参数$!赋给pid变量,以记录子进程的进程IDpid=$!echo父脚本:子脚本(PID=$pid)已启动echo父脚本:继续执行中.sleep2echo父脚本:暂停执行,等待子脚本执行完毕.wait$pidecho父脚本:子脚本已结束,父脚本继续.echo父脚本:父脚本执行结束。脚本退出!1234567891011121314151617181920212212345678910111213141516171819202122下面是子脚本:#!/bin/bash# 异步执行(wait)使用样例-子脚本#echo子脚本:正在运行.sleep5echo子脚本:子脚本结束。脚本退出!123456789123456789脚本执行,产生如下输出:fbap:/home/fbap/usertmp>./async-parent.sh父脚本:启动子脚本.父脚本:子脚本(PID=42620)已启动父脚本:继续执行中.子脚本:正在运行.父脚本:暂停执行,等待子脚本执行完毕.子脚本:子脚本结束。脚本退出!父脚本:子脚本已结束,父脚本继续.父脚本:父脚本执行结束。脚本退出!