0

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と、次の2つのプロセスが発生します。

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

なぜ2つのプロセスを取得するのですか?これはとにかく効率が悪いですか?

4

1 に答える 1

0

最初のプロセスは、node.jsを開始したbashのインスタンスです。2番目のプロセスは、実際のnode.jsプロセスです。

bashプロセスはいくつかのリソース(主にメモリ)を使用していますが、node.jsが終了するのを待っているだけです。

私はあなたがこれをすることによって余分なbashを取り除くことができると信じています:

交換:

exec bash-c'ソース/home/devuser/nvm/nvm.sh&&ノードアプリ'

と:

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

これにより、最初にフォークを使用せずに、bashプロセスがnode.jsを実行します。ほとんどの場合、これはnode.jsが終了するのを待たないことを意味します。

于 2012-11-30T05:04:42.087 に答える