プロセス抽象化に使用可能な信号を使用してプロセスを制御するのに問題があります。次の例では、ツリーperl
全体の親スクリプトがあり、その値group i.d.
は25235
。これはGID
すべての子供たちが受け継ぐことです。ただし、子の1つであるPID
ofを持つシェルは4205
新しいGID
シェルを起動します4205
。
プロセスツリーのこのブランチに新しいグループIDを設定したのは、プロセスツリーの残りの部分に影響を与えずにkill -9 -4205
同じグループIDを共有しながら、shプロセスとすべての子プロセスを終了したいからです。GID
その後、シェルプロセスとそのサブプロセスを再起動できます。私が持っている問題は、perl
スクリプト(親)から始めてツリー全体を終了する必要があるときです。kill -9 -25235
(main group i.d.
)またはkill -9 4678
(親PID
)を実行すると、グループIDが異なる分岐を除いてツリー全体が終了します。これらのプロセスは init で再び親化されます。
他の木に関係なく木全体を殺す方法はありますかGIDs
?おそらく来るかもしれないと思いsession ids
ますが、果たして来るかはわかりません。
プロセスツリーの例:
perl(4678,25235)─┬─sc_serv(4685,25235)─┬─{sc_serv}(4691,25235)
│ ├─{sc_serv}(4693,25235)
│ └─{sc_serv}(4694,25235)
└─sh(4205,4205)─┬─ffmpeg(4207,4205)
└─vlc(4208,4205)─┬─{vlc}(4217,4205)
├─{vlc}(4219,4205)
└─{vlc}(4296,4205)