打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
shell 中 父进程 子进程 即异步执行

异步执行

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

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

wait命令

下面通过两个例子,演示wait命令的使用:

#!/bin/bash## 异步执行(wait)使用样例-父脚本#echo "父脚本:启动子脚本.."./async-child &# 通过将shell参数 $! 赋给pid变量,以记录子进程的进程IDpid=$!  echo "父脚本:子脚本(PID=${pid})已启动"echo "父脚本:继续执行中.."sleep 2echo "父脚本:暂停执行,等待子脚本执行完毕.."wait ${pid}echo "父脚本:子脚本已结束,父脚本继续.."echo "父脚本:父脚本执行结束。脚本退出!"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

下面是子脚本:

#!/bin/bash## 异步执行(wait)使用样例-子脚本#echo "子脚本:正在运行.."sleep 5echo "子脚本:子脚本结束。脚本退出!"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

脚本执行,产生如下输出:

[fbap:/home/fbap/usertmp]>./async-parent.sh父脚本:启动子脚本..父脚本:子脚本(PID=42620)已启动父脚本:继续执行中..子脚本:正在运行..父脚本:暂停执行,等待子脚本执行完毕..子脚本:子脚本结束。脚本退出!父脚本:子脚本已结束,父脚本继续..父脚本:父脚本执行结束。脚本退出!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linux运行文件的方式是什么?
在脚本中使用 trap
执行Shell脚本(多种方法)
该死的端口占用!教你用 Shell 脚本一键干掉它!
shell中的点命令与source命令的区别
Linux shell 实现多线程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服