サーバーがACPIシャットダウンを介してシャットダウンされることがあり、プロセスを正常にシャットダウンすることができました。ただし、プロセス(ジョブA)は正常なシャットダウン中に別のプロセス(ジョブB)に依存するため、ジョブAが停止するまでジョブBが停止しないことを確認したいと思います。
両方のプロセスはUpstartジョブであるため、これをジョブBの/ etc/initファイルに追加して、これを実行しようとしました。
# Don't stop until job A stops
pre-stop script
while true
do
status A | grep -q "stop/waiting" && exit 0
sleep 1
done
end script
これはうまくいかないようです。 ACPIシャットダウンを介してサーバーをシャットダウンすると、通常、ジョブAの前にジョブBがシャットダウンするため、ジョブAはジョブBが起動していないというエラーメッセージを吐き出します。
スクリプトに何か問題がありますか?私が取るべき別のアプローチはありますか?または、Upstartで必要なことを実行できませんか?
ジョブA内で次のオプションを使用できます。
依存サービスの前に停止する
stop on stopping B
依存サービスの後に開始
start on started B