Ответ 1
Вы можете использовать forever programatically следующим образом:
Использование экземпляра Forever внутри node.js script:
var forever = require('forever-monitor');
var child = new (forever.Monitor)('your-filename.js', {
max: 3,
silent: true,
options: []
});
child.on('exit', function () {
console.log('your-filename.js has exited after 3 restarts');
});
child.start();
Вы должны потратить минуту и прочитать варианты, доступные в отличной документации для Forever в README.md
У вас есть несколько событий, которые можно прослушать также на Forever:
- error [err]: При возникновении ошибки
- start [process, fvrFile, data]: Поднять, когда цель script будет запущена.
- stop [process]: Поднимается, когда пользователь script останавливается пользователем
- сохранить [путь, данные]: поднят, когда целевой монитор сохраняет информацию pid на диск.
- restart [forever]: Поднимается каждый раз, когда цель script перезапускается.
- exit [forever]: Поднимается, когда цель script на самом деле выходит (permenantly).
- stdout [data]: Поднят, когда данные получены от дочернего процесса 'stdout
- stderr [data]: Поднят, когда данные получены от дочернего процесса 'stderr
Он делает это, присоединяя прослушиватели событий к script, которые вы пытаетесь запустить, и обрабатывая их изящно.
Код довольно хорошо документирован, если вы хотите взглянуть на то, как он это делает.
Вы также должны прочитать этот отличный учебник о том, как поддерживать непрерывный процесс.
Что касается второго вопроса: Нет, он не добавляет его для запуска при загрузке. Для этого вам нужно добавить его как upstart job или использовать что-то вроде Monit для контролировать и запускать его. Для этого вы должны взглянуть на Развертывание node.js с помощью Upstart и Monit. Это отличный учебник.