SIGINT Being Sent To Other Processes
Hi,
I have a script perfmon.ksh, which calls perfmon.exe, and restarts it in case it dies.
When I run it, I see the 2 processes (perfmon.ksh, perfmon.exe). I also have 10 other programs running.
My script to stop the perfmon processes is stop_perfmon.ksh. Basically, it does this:
ps -ef | grep -v stop_ | grep perfmon | grep -v grep | awk '{print $2}' | xargs -i kill -2 {}
When I run stop_perfmon.ksh, it kills perfmon.ksh and perfmon.exe. It also kills my other 10 processes. Any ideas why it would kill the other 10 processes? I look in the debug logs of the 10 process, and all of them indicate that they terminated because they received SIGINT.
I can recreate the problem easily:
start the 10 processes
run perfmon.ksh
kill -2 perfmon.ksh
kill -2 perfmon.exe
When I do kill -2 perfmon.ksh, I noticed that it is not dying right away, but it waits until I kill -2 perfmon.exe, at which time perfmon.ksh will die, and all the other 10 processes will die.
I tried changing the stop_perfmon.ksh script so that it kill -9 perfmon.ksh, then kill -2 perfmon.exe. This seems to fix the problem.
I need to understand why
kill -2 perfmon.ksh, kill -2 perfmon.exe
kills my other processes.
Thanks,
AP
|