スクリプトを含む/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
でリストされている他のジョブは、開始、停止、および再起動で正常に機能します。
なぜ新しいスクリプトが見られないのですか?
私はちょっと馬鹿だと思う...しかし、ここにある:
Upstartスクリプトの最後から「end script」スタンザを見逃しました...
post-start script
echo "minecraft started"
になるはずだった
post-start script
echo "minecraft started"
end script
end script
なしで@schkovichで機能した理由はわかりませんが...
/var/log/syslog
を使用して設定をリロードするときに、upstartログ(initctl reload-configuration
にあります)を確認します。構文エラーがある場合は、そこに表示されます。通常、これが新しいupstart構成を使用できない理由です。
スクリプトの構文を簡単に確認するには、次のコマンドを使用します。
init-checkconf -d /etc/init/service_name.conf
有効なUpstartファイルがあっても、最後にサーバーを起動したときにファイルが存在しなかった場合でも、Upstartがファイルを表示するにはサーバーを再起動する必要があります。
私の場合、次のような空のauthor
フィールドでした。
author ""
引用符で何かを追加した後にのみ機能しました。
# initctl reload-configuration
また、/etc/init/servicename.conf:2: Expected token
stdoutの代わりにsyslogにをスローしていました。死にかけているパッケージのバグレポートを提出するには忙しすぎます。
おそらくこれには特に該当しませんが、言及する価値があります。実行中のサービスのUpstart構成ファイルを編集する場合、restart
を実行しても構成は再ロードされません。新しい変更を有効にするには、stop
およびstart
を実行する必要があります。