是否可以截取默認kill
信號並將其用作正常關機的命令?這是針對Solaris SMF的。有一個我發現的可停止服務的最簡單方法是將:kill
設置爲關閉腳本,然後在Java中添加關閉掛接。在這種情況下,我想爲Node.JS做。我應該怎麼做?Node.JS關機鉤
編輯:目的是
- 停止接收新的請求。
- 給現有的回調幾秒鐘完成。
- 寫一些信息給stderr。
@ alienhard的第一個建議是使用process.on('exit'...
,但似乎我不能用這種方法完成2號。
是否可以截取默認kill
信號並將其用作正常關機的命令?這是針對Solaris SMF的。有一個我發現的可停止服務的最簡單方法是將:kill
設置爲關閉腳本,然後在Java中添加關閉掛接。在這種情況下,我想爲Node.JS做。我應該怎麼做?Node.JS關機鉤
編輯:目的是
@ alienhard的第一個建議是使用process.on('exit'...
,但似乎我不能用這種方法完成2號。
我唯一想到的就是使用信號事件。
http://nodejs.org/docs/v0.3.1/api/process.html#signal_Events
有一個exit
事件:http://nodejs.org/docs/v0.3.1/api/process.html#event_exit_
process.on('exit', function() {
console.log('About to exit.');
});
編輯:的,可以爲你工作的替代,是不是殺的過程中,發送像SIGUSR1信號(kill -s SIGUSR1
),然後偵聽此信號(請參閱@masylum在另一個答案中發佈的鏈接),並在完成或一段時間過後,以process.exit()明確終止。
它的文檔說*「的主要事件循環將不再是‘退出’回調完成後運行,所以定時器可能無法如期舉行。」 *。如果我理解正確,我將無法使用'setTimeout'或其他事件或回調。那是對的嗎?如果這是正確的,我希望有一個回調,我可以延遲退出幾秒鐘,並允許其他回調完成。有這樣的事嗎? – 2011-03-22 20:23:20
這不適用於Windows。我甚至應該嘗試除了* nix之外的任何東西嗎? ;-) – 2012-02-28 22:30:58