配置monitrc监控节点js应用程序进程,无法找到运行屏幕ec2 linux的节点app pidfile

时间:2012-11-02 19:08:57

标签: node.js linux pid gnu-screen monit

我在我的ec2 linux实例上通过屏幕运行我的app.js(节点js应用程序)。 我正在尝试配置我的monitrc文件,我需要app pidfile。 它不在: / var / run中 (并且没有/ var / www)

如果有人知道pidfile在哪里或者我怎么能找到它,我真的很感激..
谢谢!

2 个答案:

答案 0 :(得分:5)

在您的应用中,您可以使用process.pid获取当前的pid号码

var fs = require('fs');
fs.writeFile("/tmp/pidfile", process.pid);

你在tmp中获得了一个pid文件

答案 1 :(得分:3)

似乎没有创建pid文件所以我使用forever-monitor以便在出现错误时重新启动我的app.js脚本。 看起来它正在工作。 你需要做的是永远的npm安装 并编写server.js:

var forever = require('forever'),
    child = new(forever.Monitor)('app.js', {
        'silent': false,
        'pidFile': '/var/run/app.pid',
        'watch': false,
        'options': ['8383'],  // Additional arguments to pass to the script,
        'sourceDir': '.', // Directory that the source script is in
        'watchDirectory': '.',     // Top-level directory to watch from.
        'watchIgnoreDotFiles': true, // whether to ignore dot files
        'watchIgnorePatterns': [], // array of glob patterns to ignore, merged with contents of watchDirectory + '/.foreverignore' file
        'logFile': 'logs/forever.log', // Path to log output from forever process (when daemonized)
        'outFile': 'logs/forever.out', // Path to log output from child stdout
        'errFile': 'logs/forever.err'
    });
child.start();
forever.startServer(child);

然后用 - node server.js运行它(我从〜/ nodejs目录运行它) 仍然应该在/ var / run中的pid文件不存在,很奇怪,但我不再需要monit了。 我仍然不明白为什么我应该另外使用upstart(就像所有相关建议的帖子)无论如何当我试图运行upstart时它不起作用