親プロセスが終了したら、すべての子プロセスを終了して初期化に切り替えるには?

親プロセスが終了したら、すべての子プロセスを終了して初期化に切り替えるには?

次の問題があります。多くの子プロセスを作成した後、大きな親プロセスが(誤って!)終了すると、すべての子プロセスがinit

どうすればこれらすべての子プロセスを安全に終了できますか?

私は方法があると思いました。このコマンドを使用して、親プロセスについて学びます。

ps -o ppid= <number of some child process>

完了すると使用できますこの回答すべての子プロセスを終了します。

ここでの問題は、すべてのサブプロセスが切り替えられ、initこのソリューションが機能していないことです。

htopを手動で終了する以外に他の方法はありますか?

よろしくお願いします!

ベストアンサー1

  1. 短期ソリューション:  大規模な親プロセスが同時にすべての子プロセスを生成する場合は、psSTIME(プロセス開始時刻)に基づいて出力をソートします。これは、プロセス名とともにこの呼び出しで孤児を識別するのに役立ちます。
  2. 長期的な修正:  起動するすべてのプロセスのPIDログを保持するように親プロセスプログラムを変更します。その後、それをキルリストとして使用できます。

おすすめ記事