说我有一个像这样的过程:
#!/usr/bin/env bash
node foo.js &
pid=$!
有没有办法监听从pid创建的子进程? 我想创建一个从pid创建/派生的pid列表。也就是说,我想知道pid的任何子代或孙子,某种方式。
正确,现在我将每个子进程的pid记录到stdout并以这种方式捕获它,但是这样做有几个问题。这不是通用的解决方案,尤其是如果我无法控制所有子proc或重定向其stdout时。
答案 0 :(得分:1)
您可以通过pstree或ps --tree从childs进程pids中获取。
答案 1 :(得分:0)
我认为解决此问题的最佳方法是使用以下方法:
#!/usr/bin/env bash
node foo.js &
pid=$!
sleep 5;
pgrep -P $pid | xargs kill -INT
会将SIGINT信号发送到$ pid的所有子进程。