0

我正在使用 upstart 启动使用 NVM(节点版本管理器)的 NodeJS 进程。

暴发户命令是这样的:

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

这可以很好地启动节点,但是当我执行 a 时ps wax | grep node,我得到了这两个过程:

 4284 ?        Ss     0:00 bash -c source /home/devuser/nvm/nvm.sh && node app
 4316 ?        Sl     1:09 node app

为什么我得到两个进程?无论如何,这是否效率较低?

4

1 回答 1

0

第一个进程是启动 node.js 的 bash 实例。第二个进程是实际的 node.js 进程。

bash 进程正在使用一些资源(主要是内存),但只是在等待 node.js 退出。

我相信你可以通过这样做摆脱额外的 bash:

代替:

exec bash -c 'source /home/devuser/nvm/nvm.sh && 节点应用程序'

和:

exec bash -c 'source /home/devuser/nvm/nvm.sh && exec node app'

这让 bash 进程执行 node.js,而无需先使用 fork。大多数情况下,这意味着它不会等待 node.js 退出。

于 2012-11-30T05:04:42.087 回答