I am having issues with process control using the signals available to the process abstraction. In the example below you can see there is a perl script which is the parent of the whole tree with a group i.d. of 25235. This GID is inherited by all the children. However one of the children, a shell with the PID of 4205, starts a new GID of 4205.The reason I am setting a new group id for this branch of the process tree is there are times I want to run kill -9 -4205 killing the sh process and all its children with that share the same GID without affecting the rest of the process tree. I can then restart the shell process and its children. The problem I am having is when I need to kill the whole tree starting with perl script (the parent) If I run kill -9 -25235 (main group i.d.) or kill -9 4678 (parents PID) this will kill the whole tree except the branch which has a different group id. These processes will be re-parented to init.Is there a way to kill the whole tree regardless of the different GIDs? I suspect session ids may come to play but I have not been able to figure that out if so.process tree example: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)
Kill a whole process tree regardless different GIDs
process;signals