查看node.js应用程序的文件更改的最佳方法是什么?

时间:2015-03-17 02:27:08

标签: node.js debian

我定期将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”。 :)

1 个答案:

答案 0 :(得分:0)

Linux内核支持名为inotify的文件系统通知子系统。您可以将它与nodejs一起使用:https://github.com/c4milo/node-inotify