bash 如何等待脚本生成的所有子(和孙等)进程

2022年 10月 17日 发表评论
免费、便宜/高性价比 服务器汇总(已更新):点击这里了解

本站教程收集整理的这篇文章主要介绍了bash如何等待脚本生成的所有子(和孙等)进程,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。

语境:

用户为我提供了自定义脚本来运行.这些脚本可以是任何类型的脚本,以启动多个GUI程序,后端服务.我无法控制脚本的编写方式.这些脚本可以是阻塞类型,即执行等待直到所有子进程(顺序运行的程序)退出

#exaple of blocking script  echo "START"  first_program   second_program   echo "DONE"

或非阻塞类型,即在后台分叉子进程并退出类似的东西

#example of non-blocking script  echo "START"  first_program &  second_program &  echo "DONE"

我想要实现的目标是什么?

用户提供的脚本可以是上述两种类型中的任何一种,也可以是两者的混合.我的工作是运行脚本并等待它启动的所有进程退出然后关闭节点.如果它的阻塞类型,case很简单,即得到脚本执行过程的PID并等到ps -ef | grep -ef PID没有更多的条目.非阻塞脚本是给我带来麻烦的

有没有办法可以获得通过执行脚本产生的所有子进程的PID列表?任何指针或提示将受到高度赞赏

您可以使用wait等待userscript启动的所有后台进程完成.由于wait只适用于当前sHell的子代,因此您需要获取其脚本而不是将其作为单独的进程运行.

( source userscript; wait )

在显式子sHell中获取脚本应该模拟足够紧密地启动新进程.如果没有,您还可以设置子sHell,这会强制启动一个新进程,然后等待它完成.

( source userscript; wait ) & wait

本站总结

以上是本站教程为你收集整理的bash如何等待脚本生成的所有子(和孙等)进程全部内容,希望文章能够帮你解决bash如何等待脚本生成的所有子(和孙等)进程所遇到的程序开发问题。

如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。

小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: