2013-02-12 20 views
13

Node.jsをUpstartで起動すると、Node.js内のファイルにアクセスしようとすると、フルパスを使用せずにNode.jsにアクセスできなくなります。作業ディレクトリを使用する必要があります。Upstart node.js作業ディレクトリ

start on startup 
stop on shutdown 

script 
     echo $$ > /var/run/mynodeapp.pid 
     exec sudo -u mynodeapp node server.js >> /var/log/mynodeapp.sys.log 2>&1 
end script 

pre-start script 
     echo "Starting" >> /var/log/mynodeapp.sys.log 
end script 

pre-stop script 
     rm /var/run/mynodeapp.pid 
     echo "Stopping" >> /var/log/mynodeapp.sys.log 
end script 

答えて

24

解決策は、スクリプト内のディレクトリを変更することです。私の場合、ユーザはmynodeappであり、ノードファイルはユーザディレクトリ(/ home/mynodeapp /)にあります。

script 
     chdir /home/mynodeapp/ 
     echo $$ > /var/run/mynodeapp.pid 
     exec sudo -u mynodeapp node server.js >> /var/log/mynodeapp.sys.log 2>&1 
end script 

私は$$は、エコーラインに意味や、彼らが知っていれば2> & 1.たぶん誰かがこれでチャイムができるものを見つけるためには至っていません!

+2

$$は何ですか?http://stackoverflow.com/questions/5163144/what-are-the-special-dollar-sign-shell-variables – jbowes

+0

華麗な感謝! :) –

+0

問題ありません。あなたは自分の答えを受け入れることができます。 – jbowes

関連する問題