获取从父进程创建的所有子/孙进程的PID

时间:2018-09-26 01:06:33

标签: bash shell fork pid child-process

说我有一个像这样的过程:

#!/usr/bin/env bash

node foo.js &
pid=$!

有没有办法监听从pid创建的子进程? 我想创建一个从pid创建/派生的pid列表。也就是说,我想知道pid的任何子代或孙子,某种方式

正确,现在我将每个子进程的pid记录到stdout并以这种方式捕获它,但是这样做有几个问题。这不是通用的解决方案,尤其是如果我无法控制所有子proc或重定向其stdout时。

2 个答案:

答案 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的所有子进程。

https://linux.die.net/man/1/pgrep