2012-11-15 57 views
2

我試圖將一些關機功能綁定到我的nodejs應用程序(版本0.8.12)。由於我產卵子進程的很多,在分佈式環境現狀的工作,我目前通過nodejs killall關機掛鉤

var n = spawn('killall', ['node']); 

問題查殺應用程序是與此顯然on('exit', ...)邏輯不再工作,我確實有像這樣:

process.on('exit', function() { 
    if(exit_cb) 
     exit_cb() 
    else 
     console.log('About to exit.'); 
}); 

而且它不會在我殺死應用程序時觸發。

有沒有辦法使用killall命令添加關閉鉤子,還是應該找到另一種方法來終止我的子進程以使鉤子正常工作?

感謝

回答

3

你需要監聽SIGTERM信號killall發送由dafault。但是也需要在所有作業完成後手動停止進程。

process.on('SIGTERM', function() { 
    if(exit_cb) { 
     exit_cb(); 
     process.exit(); 
    } else { 
     console.log('About to exit.'); 
     process.exit(); 
    } 
}); 
+0

很明顯,這不適用於Node 0.8.14,如果有人能證實這一點,我會很高興。 這是標記爲正確的,因爲它在我在問題時使用的版本(0.8.12)中有效。 – Masiar

+2

在節點v0.8.14中適合我。 –