upstartを使用して不明なインスタンスを停止する

upstartを使用して不明なインスタンスを停止する

私は今Upstartを始めているので、次のログファイルを印刷するための非常に基本的なスクリプトを書いていvm-service.confます/etc/init

description "Virtual Images"
author      "Me"

start on runlevel [2345]
stop on runlevel [016]
respawn   


script
echo "DEBUG: `set`" >> /tmp/vm-service.log

end script


pre-stop script
    echo "DEBUG: `set`" >> /tmp/vm-service.log
end script

を実行すると、sudo start vm-service次のように出力されます。

vm-service start/running, process 29034

ただし、実行すると次のようにsudo stop vm-service出力されます。

stop: Unknown instance

実行しようとしましたが、sudo initctl reload-configuration停止するとエラーが発生します。

私は見たことがないレシピしかし、私はおそらく明らかなものを見逃しているようです。

ベストアンサー1

デフォルトプロセス(スクリプトまたはexecセクションが指定されている場合に実行されるプロセス)が終了すると、Upstartはジョブが停止したと見なします。その後、Upstartはリリース後にプロセスを実行します。

したがって、何が起こっているのかは、最初のスクリプトが実行され、終了し、Upstartがジョブの停止を考慮し、次に2番目のスクリプトが実行され終了することです。停止したジョブに対して停止コマンドを実行すると、表示されるメッセージが印刷されます。

この問題を処理するには、プリブートセクションを使用します。

pre-start exec foo --bar

post-start exec baz --foo

これにより、事前開始セクションが完了すると、Upstartはジョブを停止せずに開始済みとしてマークします。

おすすめ記事