Skip to content

Instantly share code, notes, and snippets.

@FGRibreau
Created February 16, 2012 18:41
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save FGRibreau/1846952 to your computer and use it in GitHub Desktop.
Save FGRibreau/1846952 to your computer and use it in GitHub Desktop.
Simple snippet for cross-platform .pid management in NodeJS. I use it for managing NodeJS apps with supervisord and monit
//
// Usage: require('./pid')("myapp");
//
var fs = require('fs');
module.exports = function(appname){
process.title = appname;
var PID_FILE = "/usr/local/var/run/"+process.title+".pid";
fs.writeFileSync(PID_FILE, process.pid+"\n");
process.on("uncaughtException", function(err) {
console.error("[uncaughtException]", err);
return process.exit(1);
});
process.on("SIGTERM", function() {
console.log("SIGTERM (killed by supervisord or another process management tool)");
return process.exit(0);
});
process.on("SIGINT", function() {
console.log("SIGINT");
return process.exit(0);
});
process.on("exit", function() {
return fs.unlink(PID_FILE);
});
};
#
# The following snippet must be inserted at the top of your main js file
#
process.title = "MyApp"
PID_FILE = "/usr/local/var/run/#{process.title}.pid"
fs = require("fs")
fs.writeFileSync PID_FILE, "#{process.pid}\n"
process.on "uncaughtException", (err) ->
console.error "[uncaughtException]", err
process.exit 1
process.on "SIGTERM", ->
console.log "SIGTERM (killed by supervisord or another process management tool)"
process.exit 0
process.on "SIGINT", ->
console.log "SIGINT"
process.exit 0
process.on "exit", ->
console.log('Exiting...')
fs.unlink PID_FILE
#
# Your code start here
#
setInterval (->), 1000
//
// The following snippet must be inserted at the top of your main js file
//
process.title = "MyApp";
var PID_FILE = "/usr/local/var/run/"+process.title+".pid"
, fs = require('fs');
fs.writeFileSync(PID_FILE, process.pid+"\n");
process.on("uncaughtException", function(err) {
console.error("[uncaughtException]", err);
return process.exit(1);
});
process.on("SIGTERM", function() {
console.log("SIGTERM (killed by supervisord or another process management tool)");
return process.exit(0);
});
process.on("SIGINT", function() {
console.log("SIGINT");
return process.exit(0);
});
process.on("exit", function() {
return fs.unlink(PID_FILE);
});
//
// Your code start here
//
setInterval(function(){}, 1000);
@pste
Copy link

pste commented Feb 2, 2015

You should use the unlinkSync on exit, otherwise you'll not granted to have the pid file deleted

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment