TL; DR、同じグループIDを持つ兄弟プロセスを終了せず、端末に出力を印刷せず、ゼロ以外の終了コードを使用してプロセスとすべての子プロセスを終了する方法が必要です。
孫と子孫を生成する子プロセスを生成するbashスクリプトがあります。
sudoを使わずに特定の子とその子の両方を殺したいと思います。
以下は試してみましたが、うまくいかなかったいくつかの解決策です。
グループIDで殺す子供に同じグループIDを持つ兄弟プロセスがある可能性があり、私はそれを殺したくありません。
使用
kill $childpid
。これは、すべての孫と子孫プロセスを終了するわけではありません。使用
kill -9 $childpid
。これにより、スクリプトを実行している端末にテキスト出力が発生します。これは、スクリプトとKillコマンドの両方がstdoutとstderrを別のファイルにルーティングしても理想的ではありません。使用
pkill -P $childpid
。最初はこれが私が望むようですが、子プロセスは終了コード0で終了します。親プロセスは子プロセスが早期に終了したことを知る必要があるため、ゼロ以外のコードで終了する必要があります。
これを行う最良の方法は何ですか?
編集:私の投稿は重複する可能性があるとマークされていますが、このリンクのすべてのソリューションには投稿で説明した問題の1つがあります。