Убить сервер node.js - PullRequest
       1

Убить сервер node.js

0 голосов
/ 27 марта 2012

У меня есть монитор, который автоматически демонизирует процессы и управляет ими.

Итак, у меня есть программа node.js, которая каким-то образом порождает другой процесс.Мой код не использует разветвления или что-то в этом роде, он просто имеет бесконечный цикл с использованием setInterval, который выполняет некоторую работу с БД.

Вот как он выполняется:

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

После этого top -bcn1|grep program.js показывает:

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

Мой монитор процесса устанавливает файл pid на 25053, поэтому, когда я говорю ему перезапустить программу, он убивает 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

Так как мне сделать так, чтобы "дочерний" процесс или что-то еще было убито?

У меня такое ощущение, что это что-то базовое в узле, но у меня нетпока не нашел ответа.

1 Ответ

0 голосов
/ 27 марта 2012

вам нужно прослушивать событие выхода из процесса ...

try:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...