web-dev-qa-db-ja.com

Upstartに新しいスクリプトが表示されない

スクリプトを含む/etc/init/という名前の新しいスクリプトをminecraft.confに追加しました。

start on startup
stop on shutdown
respawn
respawn limit 20 5

script
  export HOME="/root"
  exec /root/minecraft/start.sh 2>&1 >> /var/log/minecraft.log
end script

post-start script
   echo "minecraft started"

start minecraftを試すと、エラーが表示されます:start: Unknown job: minecraft

initctl listを実行しようとしましたが、Minecraftのジョブがリストされていません。 initctl reload-configurationを実行してみましたが、違いはありません。

initctl listでリストされている他のジョブは、開始、停止、および再起動で正常に機能します。

なぜ新しいスクリプトが見られないのですか?

27
Jasarien

私はちょっと馬鹿だと思う...しかし、ここにある:

Upstartスクリプトの最後から「end script」スタンザを見逃しました...

post-start script
   echo "minecraft started"

になるはずだった

post-start script
   echo "minecraft started"
end script

end scriptなしで@schkovichで機能した理由はわかりませんが...

9
Jasarien

/var/log/syslogを使用して設定をリロードするときに、upstartログ(initctl reload-configurationにあります)を確認します。構文エラーがある場合は、そこに表示されます。通常、これが新しいupstart構成を使用できない理由です。

12
rcomblen

スクリプトの構文を簡単に確認するには、次のコマンドを使用します。

init-checkconf -d /etc/init/service_name.conf

有効なUpstartファイルがあっても、最後にサーバーを起動したときにファイルが存在しなかった場合でも、Upstartがファイルを表示するにはサーバーを再起動する必要があります。

11
Mike Bethany

私の場合、次のような空のauthorフィールドでした。

author ""

引用符で何かを追加した後にのみ機能しました。

# initctl reload-configuration

また、/etc/init/servicename.conf:2: Expected tokenstdoutの代わりにsyslogにをスローしていました。死にかけているパッケージのバグレポートを提出するには忙しすぎます。

4
int_ua

おそらくこれには特に該当しませんが、言及する価値があります。実行中のサービスのUpstart構成ファイルを編集する場合、restartを実行しても構成は再ロードされません。新しい変更を有効にするには、stopおよびstartを実行する必要があります。

http://upstart.ubuntu.com/cookbook/#restart

3
kristi