如何在 bash shell 脚本中获取子进程的 PID 到父进程?

yw5*_*643 5 linux process shell-script

我的shell脚本如下:

#!/bin/bash
./process1 #It will create a sub process: sub_process1
while [ condition ]; do
    break
done
kill -9 process1 and sub_process1
Run Code Online (Sandbox Code Playgroud)

在我的脚本中,它将创建一个进程:process1。process1 将创建一个子进程:sub_process1。
在脚本完成之前,需要杀死process1和sub_process1。
杀死 process1 很容易,因为它会将 PID 写入文件。但 sub_process1 不会。由于 sub_process1 是第三方组件,因此我无法触及源代码。
有一个解决方案可以获取sub_process1的PID:

  1. 使用命令枚举所有进程ps aux
  2. 使用命令获取每个进程的 PPID(父进程 ID)ps -f [PID]。如果PPID等于process1的PID,则该进程一定是sub_process1。
    上面的解决方案有点复杂。有没有一个简单的解决方案可以获取子进程ID?
    多谢。

lcd*_*047 3

由于您将其标记为 Linux: pgrep/pkill来救援:

PID_OF_SUB_PROCESS1=$( pgrep -P $PID_OF_PROCESS1 )
pkill -P $PID_OF_PROCESS1
Run Code Online (Sandbox Code Playgroud)