bashシェルスクリプトで子プロセスのPIDを親プロセスにインポートする方法は?

bashシェルスクリプトで子プロセスのPIDを親プロセスにインポートする方法は?

私のシェルスクリプトは次のとおりです。

#!/bin/bash
./process1 #It will create a sub process: sub_process1
while [ condition ]; do
    break
done
kill -9 process1 and sub_process1

私のスクリプトは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を取得する簡単なソリューションはありますか?
    ありがとうございます。

ベストアンサー1

pgrepLinux:/とマークしたので、pkill次のようにします。

PID_OF_SUB_PROCESS1=$( pgrep -P $PID_OF_PROCESS1 )
pkill -P $PID_OF_PROCESS1

おすすめ記事