2012-03-26 8 views
0

나는 프로세스를 자동 데몬 화하고 관리하는 모니터를 가지고있다.node.js 서버 죽이기

그래서이 node.js 프로그램은 어떻게 든 다른 프로세스를 생성합니다. 내 코드는 포크를 사용하지 않거나 그와 같은 것을 사용하지 않는다. 단지 db 작업을하는 setInterval을 사용하는 무한 루프가있다.

이 그것을 실행 어떻게입니다 : 내가 프로그램을 다시 시작하도록 지시 할 때

24763 ubuntu 20 0 695m 21m 5464 S 0 0.3 0:00.39 node /path/to/program.js                         
25053 ubuntu 20 0 4264 580 484 S 0 0.0 0:00.01 sh -c node /path/to/program.js >> program.log 2>&1 

내 프로세스 모니터는 다음 그래서, 25053와 PID 파일을 설정합니다 top -bcn1|grep program.js 쇼를 본 후

node /path/to/program.js >> program.log 2>&1 

, 25053을 죽이고 프로그램을 다시 시작하면 이전 명령의 출력은 다음과 같습니다.

24763 ubuntu 20 0 695m 21m 5464 S 0 0.3 0:00.39 node /path/to/program.js                         
23520 ubuntu 20 0 630m 21m 5464 S 0 0.3 0:00.39 node /path/to/program.js                         
23012 ubuntu 20 0 4264 580 484 S 0 0.0 0:00.01 sh -c node /path/to/program.js >> program.log 2>&1 

그래서 어떻게하면 "어린이"과정이든 그것이 무엇이든간에 죽게 되나요?

나는 이것이 노드에서 기본적인 것이지만 나는 아직 답을 찾지 못했다고 생각한다.

+0

확실하지 않습니다. [this pull request] (https://github.com/joyent/node/pull/2832)를 참조하십시오. –

+0

내가 산란이나 돌연변이를하지 않고 있어도 적용 되는가? – Ivan

+0

오해가 있습니다. 나는 그것이 적용되지 않는다고 믿는다. 죄송합니다. –

답변

0
당신이 과정의 오프 출구 이벤트를 수신 할 필요가

...

시도 :

var children = []; 
//keep track of the child processes... 
process.on('exit',function(){ 
    children.forEach(function(child){ 
     child.kill('SIGINT'); 
    }); 
});

이 주 : 어린이, 당신은 등 'SIGINT'

을 수신하도록 할 것

참조 : http://nodejs.org/api/child_process.html

+0

note ... 죽이려는 프로세스 ID의 목록을 유지하면서 pskill 등을 수행해야 할 수 있습니다. – Tracker1

+0

답장을 보내 주셔서 감사합니다.하지만 다시, 나는 자식 프로세스를 생성하지 않습니다 :) – Ivan