Gracefully cleanup when termination signals are sent to your process.
Because adding clean up callbacks for uncaughtException
, SIGINT
, and SIGTERM
is annoying. Ideally, you can
use this package to put your cleanup code in one place and exit gracefully if you need to.
It's only been tested on POSIX compatible systems. Here's a nice discussion on Windows signals, apparently, this has been fixed/mapped.
npm install death
var ON_DEATH = require('death'); //this is intentionally ugly
ON_DEATH(function(signal, err) {
//clean up code here
})
By default, it sets the callback on SIGINT
, SIGQUIT
, and SIGTERM
.
- SIGINT: Sent from CTRL-C
- SIGQUIT: Sent from keyboard quit action.
- SIGTERM: Sent from operating system
kill
.
More discussion and detail: http://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html and http://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html and http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap11.html.
AS they pertain to Node.js: http://dailyjs.com/2012/03/15/unix-node-signals/
No problem, do this:
var ON_DEATH = require('death')({uncaughtException: true})
Do this:
var ON_DEATH = require('death')({debug: true})
Your process will then log anytime it catches these signals.
Be careful with this one though. Typically this is fired if your SSH connection dies, but can also be fired if the program is made a daemon.
Do this:
var ON_DEATH = require('death')({SIGHUP: true})
Name it whatever you want. I like ON_DEATH
because it stands out like a sore thumb in my code.
If you want to remove event handlers ON_DEATH
returns a function for cleaning
up after itself:
var ON_DEATH = require('death')
var OFF_DEATH = ON_DEATH(function(signal, err) {
//clean up code here
})
// later on...
OFF_DEATH();
(MIT License)
Copyright 2012, JP Richardson [email protected]