How to stop server (hg serve) ?

Christian Ebert blacktrash at gmx.net
Mon Nov 2 09:13:45 CST 2009


* Greg Ward on Monday, November 02, 2009 at 09:44:28 -0500
> On Mon, Nov 2, 2009 at 6:34 AM, Christian Ebert <blacktrash at gmx.net> wrote:
>> $ sw_vers
>> ProductName:    Mac OS X
>> ProductVersion: 10.5.8
>> BuildVersion:   9L30
>> $ hg serve --pid-file test.pid &
>> [1] 5417
>> $ cat test.pid
>> 5417
>> $ kill -9 `cat test.pid`
>> [1]+  Killed                  hg serve --pid-file test.pid
> 
> I'm glad the pid file works on OS X, but you really shouldn't use
> "kill -9" as a first resort.  And explaining it like this will make
> newbies think that "kill -9" is the right thing to do.  In general,
> it's not.
> 
> Consider a server that maintains data structures on disk.  A
> well-written server will intercept signals (eg. Ctrl-C or vanilla
> "kill" (SIGTERM)) and shut itself down in a orderly fashion.
> Transactions will be aborted or committed as appropriate, locks will
> be released, etc.
> 
> However, SIGKILL (aka kill -9) cannot be intercepted by the process
> being killed.  That's the whole point of it.  So if you "kill -9" a
> well-behaved server, you are making it impossible for it to shutdown
> cleanly (abort transactions, release locks, etc.).  That leaves a mess
> for the next user of those data structures to deal with.
> 
> The usual way to shutdown a server process on Unix is to send it a
> SIGTERM (kill <pid>).  If it is still running after a few seconds,
> *then* you pull out the big guns and send SIGKILL (kill -9 <pid>).

You are right of course. I was tempted by the immediate output of
kill -9 which sort of proved that --pid-file works.

c
-- 
Wer auf sein Elend tritt, steht höher.
_HÖLDERLIN: H Y P E R I O N_  --->> http://www.blacktrash.org/hyperion/


More information about the Mercurial mailing list