我已成功在服务脚本中使用forever
一段时间了。我尝试部署零停机配置,而我唯一缺少的是forever
似乎忽略了--killSignal
参数。我的服务脚本的相关部分是:
daemon --user=$user \
$forever --killSignal=SIGHUP -p $forever_dir --uid $uid --pidFile $pidfile -l $logfile \
-a --sourceDir $SOURCE_DIR start $SOURCE_FILE &
有没有人遇到过类似的问题?我查看了永远的代码并阅读了文档,似乎其他人正在成功使用它。我已尝试将killSignal
切换为killSignal=SIGHUP
和killSignal SIGHUP
但似乎没有任何区别;它还在发送SIGKILL
。
编辑:对于记录,它似乎也忽略了pidFile
参数。
答案 0 :(得分:2)
我有一些问题永远使用killsignal和killttl选项,再加上我想要的方式重启我的脚本。我最后使用forever-monitor编写了我自己的主管脚本:
var forever = require('forever-monitor'),
child = createChild();
process.on('SIGUSR2', function restart() {
// This signal is used to restart gracefully.
var newChild = createChild();
child.stop();
child = newChild;
});
process.on('SIGTERM', function stop() {
child.stop();
child.on('stop', function () {
process.exit();
});
});
function createChild() {
console.log('Running a new instance');
var child = new (forever.Monitor)(__dirname + '/main.js', {
killTTL : 50000,
killSignal : 'SIGTERM'
});
child.on('stop', function () {
console.log('Old instance has stopped');
});
child.on('exit:code', console.log.bind(console, 'Old instance has exitted with code'))
child.on('error', function (error) {
console.error(error.stack || error);
});
return child.start();
}
您可以将此作为示例。您也可以在此处添加pidFile选项。