Worker process is not getting killed , when master is killed using -9

Hi,
I am facing one problem with nginx. I am waiting for nginx to stop
withing
30 seconds. If it is not getting stopped, I am firing command to kill
master process using
pkill -9 <master_process_pid>

But, Killing master is not killing the worker process. Due to that
reason.
Port is not getting released.

Is it known problem or desired behavior ?

regards
Vivek G.

On 2013-08-08 at 06:29 +0000, Vivek G. wrote:

I am facing one problem with nginx. I am waiting for nginx to stop withing
30 seconds. If it is not getting stopped, I am firing command to kill
master process using
pkill -9 <master_process_pid>

But, Killing master is not killing the worker process. Due to that reason.
Port is not getting released.

Is it known problem or desired behavior ?

Fundamental Unix: the process never gets a chance to kill the children
when you use -9.

Instead, you want to use pkill ... -g <master_process_pid>.

The -g says to use the “process group”; you can send a signal to all
processes in a group [killpg(2)] and the nginx worker processes are part
of the same process group as the nginx master process, which is the
process group leader (so its pid is the pgid of all the processes you
care about).

Do please try to use -TERM once with the process-group kill, to give the
workers a chance to clean up safely, before you hit all of the processes
at once with the nuclear option.

Regards,
-Phil