假设我有一个简单的单行shell脚本test.sh,它启动了一些其他进程,比如npm start或python server.py。
现在假设我从一个父节点程序中运行该shell脚本,即:
let child = process.spawn("./test.sh");有没有办法让节点进程跟踪由该shell脚本启动的进程?假设我想获取python或npm进程的pid并监视其生命周期。
同样有用的是,知道是否有一种方法可以让shell脚本执行此操作,因为我可以编写一个shell脚本来运行另一个shell脚本,然后让我的节点项目以中间人的身份运行我的shell脚本……因此,如果shell或节点中的任何一个都可以做到这一点,那么这两种方法都可以工作。
有可能吗?
发布于 2019-05-18 15:45:03
您可以在python中使用类似下面的内容列出进程的所有子进程,并提供父进程的PID作为第一个参数
#! /usr/bin/env python
import sys
import psutil
for child in psutil.Process(int(sys.argv[1])).children(recursive=True):
print(child.pid)发布于 2019-05-18 16:09:31
在Linux上,您可以strace目标进程并查找fork系统调用。
类似的技术可能在大多数其他平台上也是可能的,尽管细节会有所不同。在某些平台上,您需要root或同等权限才能检查进程的内部结构,即使它属于您自己。
https://stackoverflow.com/questions/56195688
复制相似问题