From: | "scott(dot)marlowe" <scott(dot)marlowe(at)ihs(dot)com> |
---|---|
To: | Terry Hampton <thampton(at)limacorp(dot)com> |
Cc: | Andrew Sullivan <andrew(at)libertyrms(dot)info>, <pgsql-admin(at)postgresql(dot)org> |
Subject: | Re: Kill Process ERROR !!! |
Date: | 2003-07-09 15:39:59 |
Message-ID: | Pine.LNX.4.33.0307090933350.8686-100000@css120.ihs.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
On Wed, 9 Jul 2003, Terry Hampton wrote:
> Andrew Sullivan wrote:
> > On Wed, Jul 09, 2003 at 09:52:38AM +0000, aris wendy wrote:
> >
> >>I want to kill process no 582, I use kill -9 582 but all user become
> >>disconnect look at below
> >
> >
> > Try kill -2.
> >
>
> The " kill -2 " is much better advice.
>
> Might I suggest to all - AVOID the " classic " kill -9 !
> Never use it, unless nothing else works. It's curious why
> " kill -9 " is such a part of " common " UNIX practice.
>
> Yes it works, but it's messy and often leads to problems as
> Andrew experienced. The "9" signal is too brute force,
> and should only be used as a LAST resort.
>
> Your first command to kill a process is simple: kill <pid>
>
> Notice - NO signal value. By default UNIX sends a signal 15
> with the kill command. Signal 15 is the default because
> it is the normal termination signal. ( I don't have a manual in
> handy to give you the exact name of the signal ). Signal 15
> should ALWAYS be used first since it tells the process to
> terminate as if the process was terminating on its own. This
> means, the process will more likely clean up after itself,
> regarding file descriptors, child processes, etc.
What amazes me is how many people don't try 'kill pid' first.
> Speaking of child processes, ALWAYS kill any child processe
> first - and more specifically from high to low PID value. Basically,
> the higher the PID value, the newer or younger the child. Why
> kill child processes first ? - UNIX processes are very signal
> driven. The parent of any processes looks for signals from its
> children, and acts accordingly. Processes always have a parent.
> Child processes that are orphaned, are sometimes " adopted " by
> another process - and that is always process 1 Usually,
> this is the story behind " zombies " - those processes you can't
> kill or will go away. Next time you see a <zombie>, notice its
> parent PID is 1.
Please note that this is not necessarily true. If my server has been up a
while and I stop/restart the postmaster, it may have a fairly high id
number and it is quite possible that in x number of days time, the
children will be created with a wrapped pid which is lower than the
postmasters. Just look for the - switches that make it obvious. In fact,
this IS currently the case right now on my server:
13081 ? S 2:30 /usr/local/pgsql/bin/postmaster
13082 ? S 0:19 postgres: stats buffer process
13083 ? S 0:28 postgres: stats collector process
5600 ? S 0:00 postgres: marlowe phone [local] idle
In this case 13081 is my postmaster.
Notice that kill -9 to any postgresql backend results in all backend
connections flushing their buffers. kill -9 to the postmaster results in
a dirty shutdown and the database server has to go through the WAL and
clean things up. It's not the same as hitting the Big Red Switch, but
it's close.
From | Date | Subject | |
---|---|---|---|
Next Message | Terry Hampton | 2003-07-09 16:10:26 | Re: Kill Process ERROR !!! |
Previous Message | Terry Hampton | 2003-07-09 12:33:23 | Re: Kill Process ERROR !!! |