2014-10-02 370 views
3

我正在使用pm2来运行节点应用程序。我必须在应用程序关闭之前保存数据。此代码在shell中工作正常:node.js pm2退出

process.on('exit', function(){ 
    log.debug('exit'); 
}); 

process.on('SIGINT', function(){ 
    log.debug('SIGINT'); 
}); 

process.on('uncaughtException', function(){ 
    log.debug('uncaughtException'); 
}); 

当我使用“pm2 stop”停止应用程序时,代码不起作用。我认为pm2杀死进程。

回答

5

SIGINT通常在用户调用关闭(例如Ctrl + C)后触发。假设pm2正在触发突然关机,则不会触发SIGINT

相反,你应该听的终止信号SIGTERM应涵盖这两种情况下

process.on('SIGTERM', function() { 
    // clean up 
}); 
+0

谢谢!工作正常。 – Sannin 2014-10-02 16:00:42