CentOSサーバーの/etc/init/ディレクトリの.confファイルに次のものがあります。
#!upstart
description "shortnr server for fmc.io"
author "Felix Milea-Ciobanu"
start on startup
stop on shutdown
respawn
respawn limit 10 30
script
export HOME="/root"
exec /usr/local/bin/node /var/www/fmc.io/nodejs/app.js >> /var/www/fmc.io/logs/shortnr.upstart.log 2>&1
end script
pre-start script
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/www/fmc.io/logs/shortnr.upstart.log
end script
pre-stop script
echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/www/fmc.io/logs/shortnr.upstart.log
end script
これは非常にシンプルでわかりやすいupstartスクリプトです。shortnr
スクリプトが起動するnodejsソフトウェアにちなんで、このサービスに名前を付けました。
コマンドラインで入力するstart shortnr
と、の行に沿って何かが表示されshortnr start/running, process 28350
ます。
ただし、nodejsサーバーにアクセスできないようです。ps aux | grep shortnr
コマンドシェルで実行すると、何も表示されません。
startを実行しstop shortnr
た後に実行stop: Unknown instance:
すると、元のサービスが起動しなかったことを意味します。
Upstartスクリプトで設定したログファイルは次のようになります。
[2012-10-05T17:00:17.174Z] (sys) Starting
[2012-10-05T17:00:17.181Z] (sys) Starting
[2012-10-05T17:00:17.190Z] (sys) Starting
[2012-10-05T17:00:17.197Z] (sys) Starting
[2012-10-05T17:00:17.204Z] (sys) Starting
基本的に、startコマンドを発行したときに、スクリプトは1秒間に複数回起動しようとしています。つまり、サービスは起動時などにクラッシュし、リスポーンしようとしていますか?
ただし、後でコマンドをコピーexec
してシェルプロンプトに貼り付けると、nodejsスクリプトが起動し、正しく実行されます。
つまり、Upstartスクリプトに何か問題があるはずです。
コマンドを使用してサービスを開始/停止しようとするとinitctl
、同じ結果が得られます。
CentOS6.3とUpstart0.6.5を実行しています
何がこれを引き起こしているのか、または私のスクリプトを修正する方法を誰かが知っていますか?