The importance of killing processes with the right signal

January 11, 2008

Here is an important corollary to KillOrderImportance: when your system is overloaded, you should always kill processes with 'kill -9'.

There are a fair number of sources that will tell you that you should always kill processes with something besides kill -9, unless they won't die from lesser measures. In an overloaded situation this is terribly wrong: either the processes don't have a signal handler for the lesser signal, in which case the two are equivalent, or they do have a signal handler, in which case using the lesser signal simply causes them to wake up (if they were sleeping) and churn around more.

Even in general I tend to be somewhat dubious about the advice; usually, when I am killing a process with anything except a small list of signals, I want it gone. Using 'kill -9' makes completely sure of this, in one go, without any fuss and bother.

(If you really want to give a process a chance to clean up, you need to know what sort of program it is. User level programs tend to only catch SIGHUP, if that, while demons probably don't catch SIGHUP but may catch SIGTERM, since many Unixes send everything SIGTERM as part of shutting down.)

Written on 11 January 2008.
« What you don't know about other peers in BitTorrent
A thought about Amazon's S3 and EC2 »

Page tools: View Source, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Fri Jan 11 23:41:04 2008
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.