私のシェルスクリプトは次のとおりです。
#!/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を取得するソリューションがあります。
- すべてのプロセスを列挙するには、このコマンドを使用します
ps aux
。 - コマンドを使用して、各プロセスのPPID(親プロセスID)を取得します
ps -f [PID]
。 PPIDがprocess1のPIDと等しい場合、プロセスはsub_process1でなければなりません。
上記の解決策は少し複雑です。子プロセスIDを取得する簡単なソリューションはありますか?
ありがとうございます。
ベストアンサー1
pgrep
Linux:/とマークしたので、pkill
次のようにします。
PID_OF_SUB_PROCESS1=$( pgrep -P $PID_OF_PROCESS1 )
pkill -P $PID_OF_PROCESS1