代码之家  ›  专栏  ›  技术社区  ›  Alexander Mills

获取从父进程创建的所有子进程/孙进程的PID[重复]

  •  0
  • Alexander Mills  · 技术社区  · 6 年前

    这个问题已经有了答案:

    假设我有这样一个过程:

    #!/usr/bin/env bash
    
    node foo.js &
    pid=$!
    

    有没有一种方法来监听从PID创建的子进程? 我想创建一个从pid创建/分叉的pid列表。也就是说,任何一个皮德的孩子或孙子,我都想知道, 以某种方式 .

    现在,我将每个子进程的PID记录到stdout中,并以这种方式捕获它,但这有几个问题。这并不是一个通用的解决方案,特别是如果我不控制所有的子进程,或者如果它们的stdout被重定向。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Madhan S    6 年前

    您可以通过ps tree或ps-树来获取子进程pids。

        2
  •  0
  •   Alexander Mills    6 年前

    我认为解决这个问题的最佳方法是使用这种方法:

    #!/usr/bin/env bash
    
    node foo.js &
    pid=$!
    
    sleep 5;
    
    pgrep -P $pid | xargs kill -INT
    

    这将向$pid的所有子进程发送sigint信号。

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