我正在使用upstart来启动使用NVM(节点版本管理器)的NodeJS进程。
upstart命令是这样的:
description "Service to start node app"
author "Barry Steyn"
setuid devuser
setgid devuser
env DIR=/home/devuser/nodejs/authentication
script
chdir $DIR
exec bash -c 'source /home/devuser/nvm/nvm.sh && node app'
end script
respawn
这可以很好地启动节点,但是当我执行ps wax | grep node
时,我得到了这两个过程:
4284 ? Ss 0:00 bash -c source /home/devuser/nvm/nvm.sh && node app
4316 ? Sl 1:09 node app
为什么我要获得两个流程?这无论如何效率都不高?
答案 0 :(得分:0)
第一个进程是bash的实例,它启动了node.js.第二个过程是实际的node.js过程。
bash进程正在使用一些资源(主要是内存),但只是等待node.js等待退出。
我相信你可以通过这样做摆脱额外的狂欢:
替换:
exec bash -c'source /home/devuser/nvm/nvm.sh& amp ;& amp;节点app'
使用:
exec bash -c'source /home/devuser/nvm/nvm.sh& amp ;& amp; exec 节点应用
这使得bash进程在不使用fork的情况下执行node.js。大多数情况下,这意味着它不会等待node.js退出。