小编irr*_*aju的帖子

如何获取脚本生成的所有子进程的列表

语境:

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

#exaple of blocking script
echo "START"
first_program 
second_program 
echo "DONE"
Run Code Online (Sandbox Code Playgroud)

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

#example of non-blocking script
echo "START"
first_program &
second_program &
echo "DONE"
Run Code Online (Sandbox Code Playgroud)

我想要达到什么目标?

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

有没有办法获得通过执行脚本产生的所有子进程的 PID 列表?任何指针或提示将不胜感激

unix bash shell process bash-scripting

11
推荐指数
2
解决办法
2万
查看次数

标签 统计

bash ×1

bash-scripting ×1

process ×1

shell ×1

unix ×1