2012-11-02 6 views
1

내 ec2 리눅스 인스턴스의 화면을 통해 app.js (노드 js 응용 프로그램)를 실행합니다. monitrc 파일을 설정하려고하는데, 앱 pidfile이 필요합니다. 이 글은 아니다 : 은/var/ 를 실행 (그리고/var에/www가이없는) 누군가가 pidfile이 어떤 생각을 가지고 나 내가 그것을 어떻게 알 수 있는지노드 js 응용 프로그램 프로세스를 모니터하기 위해 monitrc를 구성하고, 노드 app를 찾을 수 없습니다. ec2 linux로 실행중인 pidfile

정말 감사하겠습니다이 ..
감사합니다. 앱에서

답변

3

보인다 forever-monitor를 사용하여 오류가 발생하면 app.js 스크립트를 다시 시작하십시오. 작동하는 것처럼 보입니다. 당신이해야 할 것은 영원히 를 설치하고 쓰기 server.js를 NPM입니다 :

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); 

을하고 그것을 실행 - 정지 (나는 ~/nodejs 디렉토리에서 실행) 노드 server.js는 PID 파일을 을 그/var/run에 있어야한다고 생각합니다. 이상하지만, 더 이상 모니터를 필요로하지 않습니다. 나는 아직도 upstart를 사용하는 것이 왜 이해가 안되는가? (어쨌든 나는 upstart가 작동하지 않을 때 어쨌든 upstart를 사용해야한다.)

5

당신은 process.pid 그래서

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

와 현재의 PID 번호를 얻을 수 있으며 TMP에 pidfile을 얻을 그래서 내가 사용 만든 PID 파일이없는 것처럼

+0

감사하지만 나는 pidfile이 아닌 프로세스 번호가 필요하다. – Liatz

+1

아마도 나는 돈이 없다. 당신이 원하는 것을 잘 이해하지 못한다. 그러나 pidfile은 단지 pid 번호를 가진 파일이다. –

+0

프로세스가 다시 시작되면 pid가 변경됩니다. 어쨌든 그것이 monitrc 설정에 필요한 것입니다. 나는 그것에게 pid 파일 경로를 주어야한다. – Liatz