我定期将rsync代码更改发送到我的生产服务器。我有以下群集代码,为我的主应用程序创建工作程序。
var cluster = require('cluster');
function startWorker() {
var worker = cluster.fork();
console.log('CLUSTER: Worker %d started', worker.id);
}
if(cluster.isMaster){
require('os').cpus().forEach(function(){
startWorker();
});
// log any workers that disconnect; if a worker disconnects, it
// should then exit, so we'll wait for the exit event to spawn
// a new worker to replace it
cluster.on('disconnect', function(worker){
console.log('CLUSTER: Worker %d disconnected from the cluster.',
worker.id);
});
// when a worker dies (exits), create a worker to replace it
cluster.on('exit', function(worker, code, signal){
console.log('CLUSTER: Worker %d died with exit code %d (%s)',
worker.id, code, signal);
startWorker();
});
} else {
// start our app on worker; see meadowlark.js
require('./app.js')();
}
This article显示了如何监听信号(在文章案例SIGUSR2中,重启工作人员)。简而言之,他做了类似的事情:
process.on("SIGUSR2", function() {
//Code to disconnect workers, delete cache and restart workers
});
我的问题是: - SIGUSR2是向流程发出信号的最佳方式,它应该重新加载工人吗?如果我想发送一些其他信息怎么办? - 谁在发送信号?是否可以设置一些操作系统功能来查看文件或目录?我该怎么做?
注意: - 我宁愿使用一些与node.js无关的操作系统级功能。例如,一些帖子建议使用node.js特定模块,如“naught”等,但我宁愿不使用“naught”。 :)
答案 0 :(得分:0)
Linux内核支持名为inotify
的文件系统通知子系统。您可以将它与nodejs一起使用:https://github.com/c4milo/node-inotify