1

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

如果有人知道 pidfile 在哪里或我如何找到它,我将不胜感激。
谢谢!

4

2 回答 2

5

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

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

你在 tmp 中得到一个 pidfile

于 2012-11-02T19:16:38.970 回答
3

似乎没有创建 pid 文件,所以我使用了 forever-monitor 以便在出现错误时重新启动我的 app.js 脚本。看起来它正在工作。你需要做的是 npm install forever 并编写 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 了。我仍然不明白为什么我应该另外使用暴发户(就像所有建议的相关帖子一样)当我尝试运行暴发户时它不起作用

于 2012-11-09T11:53:11.583 回答