web-dev-qa-db-ja.com

エラーが発生した場合に、Upstartスクリプトで「exit1」だけでなく「stop; exit1」を使用するのはなぜですか?

私はUpstartスクリプト(バージョン0.6.5)を維持しており、pre-start scriptには、前提条件が満たされない場合にサービスを終了するテストがあります。

pre-start script
  if [ ! -f $REQUIRED_FILE ]; then
    echo "$REQUIRED_FILE does not exit" >> $LOG_FILE
    stop 
    exit 1
  fi
end script

csh/tcshリファレンスドキュメントによると、stop [jobIDs]

現在のバックグラウンドジョブまたはjobIDで指定されたバックグラウンドジョブを一時停止します。これはCtrl-Zまたは一時停止を補完するものです。

ここでは、特にサービスがまだ開始されていないpre-startセクション(つまり、stopスタンザによる)では、execの使用法は見当たりません。

ここで何かが足りませんか?または、ここでstopは冗長で不要ですか?

2

ジョブ内でstopを使用することは、Sudo stop <job-name>を呼び出すことと同じです。これは、ジョブのrespawn- ingを無効にする場合に使用されます。

開始前スタンザの開始文書には、この使用法を説明する例があります。

http://upstart.ubuntu.com/cookbook/#pre-start

もう1つの可能性は、何らかの理由でジョブの開始をキャンセルすることです。正当な理由の1つは、システム構成から、サービスが不要であることが明らかであるということです。

pre-start script
  if ! grep -q 'parent=foo' /etc/bar.conf ; then
    stop ; exit 0
  fi
end script
1
grimetime