У меня есть монитор, который автоматически демонизирует процессы и управляет ими.
Итак, у меня есть программа 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
Так как мне сделать так, чтобы "дочерний" процесс или что-то еще было убито?
У меня такое ощущение, что это что-то базовое в узле, но у меня нетпока не нашел ответа.