首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在节点或shell脚本中有没有办法知道一个子进程是否启动了它自己的子进程?

问在节点或shell脚本中有没有办法知道一个子进程是否启动了它自己的子进程?
EN

Stack Overflow用户
提问于 2019-05-18 11:15:29
回答 2查看 66关注 0票数 0

假设我有一个简单的单行shell脚本test.sh,它启动了一些其他进程,比如npm start或python server.py。

现在假设我从一个父节点程序中运行该shell脚本,即:

代码语言:javascript
复制
let child = process.spawn("./test.sh");

有没有办法让节点进程跟踪由该shell脚本启动的进程?假设我想获取python或npm进程的pid并监视其生命周期。

同样有用的是,知道是否有一种方法可以让shell脚本执行此操作,因为我可以编写一个shell脚本来运行另一个shell脚本,然后让我的节点项目以中间人的身份运行我的shell脚本……因此,如果shell或节点中的任何一个都可以做到这一点,那么这两种方法都可以工作。

有可能吗?

EN

回答 2

Stack Overflow用户

发布于 2019-05-18 15:45:03

您可以在python中使用类似下面的内容列出进程的所有子进程,并提供父进程的PID作为第一个参数

代码语言:javascript
复制
#! /usr/bin/env python

import sys
import psutil

for child in psutil.Process(int(sys.argv[1])).children(recursive=True):
    print(child.pid)
票数 0
EN

Stack Overflow用户

发布于 2019-05-18 16:09:31

在Linux上,您可以strace目标进程并查找fork系统调用。

类似的技术可能在大多数其他平台上也是可能的,尽管细节会有所不同。在某些平台上,您需要root或同等权限才能检查进程的内部结构,即使它属于您自己。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56195688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档