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); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
You should use the unlinkSync on exit, otherwise you'll not granted to have the pid file deleted