》一文中有所提及,这里不再赘述。
<span style="color: #0000ff">var server = http.createServer(<span style="color: #0000ff">function<span style="color: #000000"> (req,res) {
res.writeHead(200,{'Content-Type': 'text/plain'<span style="color: #000000">});
res.end('Hello World\n'<span style="color: #000000">);
}).listen(3000,'0.0.0.0'<span style="color: #000000">);
console.log('server started'<span style="color: #000000">);
<span style="color: #0000ff">var signals =<span style="color: #000000"> {
'SIGINT': 2<span style="color: #000000">,'SIGTERM': 15<span style="color: #000000">
};
<span style="color: #0000ff">function<span style="color: #000000"> shutdown(signal,value) {
server.close(<span style="color: #0000ff">function<span style="color: #000000"> () {
console.log('server stopped by ' +<span style="color: #000000"> signal);
process.exit(128 +<span style="color: #000000"> value);
});
}
Object.keys(signals).forEach(<span style="color: #0000ff">function<span style="color: #000000"> (signal) {
process.on(signal,<span style="color: #0000ff">function<span style="color: #000000"> () {
shutdown(signal,signals[signal]);
});
});
SIGUSR1
-<span style="color: #000000">handlermy_handler() {
<span style="color: #0000ff">echo <span style="color: #800000">"<span style="color: #800000">my_handler<span style="color: #800000">"<span style="color: #000000">
}
SIGTERM-<span style="color: #000000">handler
term_handler() {
<span style="color: #0000ff">if [ $pid -ne <span style="color: #800080">0 ]; <span style="color: #0000ff">then
<span style="color: #0000ff">kill -SIGTERM <span style="color: #800000">"<span style="color: #800000">$pid<span style="color: #800000">"
<span style="color: #0000ff">wait <span style="color: #800000">"<span style="color: #800000">$pid<span style="color: #800000">"
<span style="color: #0000ff">fi<span style="color: #000000">
exit <span style="color: #800080">143; # <span style="color: #800080">128 + <span style="color: #800080">15 --<span style="color: #000000"> SIGTERM
}
setup handlers
on callback,<span style="color: #0000ff">kill the <span style="color: #0000ff">last background process,<span style="color: #0000ff">which is <span style="color: #0000ff">tail</span> -f /dev/<span style="color: #0000ff">null</span><span style="color: #000000">
and execute the specified handler
trap <span style="color: #800000">'<span style="color: #800000">kill ${!}; my_handler<span style="color: #800000">'<span style="color: #000000"> SIGUSR1
trap <span style="color: #800000">'<span style="color: #800000">kill ${!}; term_handler<span style="color: #800000">'<span style="color: #000000"> SIGTERM
run application
node app &<span style="color: #000000">
pid=<span style="color: #800000">"<span style="color: #800000">$!<span style="color: #800000">"<span style="color: #000000">
<span style="color: #0000ff">wait<span style="color: #000000"> forever
<span style="color: #0000ff">while <span style="color: #0000ff">true
<span style="color: #0000ff">do
<span style="color: #0000ff">tail -f /dev/<span style="color: #0000ff">null & <span style="color: #0000ff">wait ${!<span style="color: #000000">}
<span style="color: #0000ff">done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。