forever 支持使用 --killSignal 选项自定义退出信号:
--killSignal Support exit signal customization (default is SIGKILL),
used for restarting script gracefully e.g. --killSignal=SIGTERM
以上是为了永远指示永远停止脚本的终止信号已经开始。要根据脚本退出的方式有选择地永久停止运行脚本,您需要使用forever-monitor。
首先,当您希望永远不重新启动脚本时,您的脚本需要发送一个特定的信号。这是我们的 script.js:
setTimeout(function () {
console.log('hello');
//process.kill(process.pid, 'SIGKILL'); // this will cause forever to restart the script.
setTimeout(function () {
process.kill(process.pid, 'SIGTERM'); // this will cause forever to stop the script.
}, 1000);
}, 2000);
然后,我们需要一个带有永久监视器的附加脚本(我们称之为 script-monitor.js):
var forever = require('forever-monitor');
var child = new (forever.Monitor)('script.js', {
max: 10,
silent: false,
args: []
});
child.on('restart', function() {
console.error('Forever restarting script for ' + child.times + ' time');
});
child.on('exit:code', function(code) {
console.error('Forever detected script exited with code ' + code);
if (143 === code) child.stop(); // don't restart the script on SIGTERM
});
child.start();
现在你可以运行 script.js 了:node script-monitor.js
为方便起见,here is a list node.js 中的信号事件。