2014-10-02 372 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