私の仕事は MySQL に依存しています。そのため、MySQL の後に仕事が起動できるようにしたいと考えています。
私は読んだ新興料理本start on
ジョブを自動的に開始できることがわかりました。
start on started mysql
そして、それは動作します。しかし、起動後に mysql がジョブに影響を与えることは望ましくありません。ジョブを停止すると、mysql を再起動することでジョブが再開されます。これを回避するにはどうすればよいですか?
答え1
/tmp/
ジョブがすでに実行されたかどうかを追跡するために、フォルダーにロック ファイルを作成します。次に例を示します。
次の 2 つの Upstart ジョブ構成ファイルを作成します。
/etc/init/joba.conf
# job A start on local-filesystems stop on runlevel[016] script /bin/echo job-A started >> /tmp/myjobs.log exec sleep 5 end script
/etc/init/jobb.conf
# job B triggered after A start on started joba script /bin/echo job-B started >> /tmp/myjobs.log if ! [ -f /tmp/jobb.lock ] then /bin/echo " do job-B tasks" >> /tmp/myjobs.log /bin/touch /tmp/jobb.lock else /bin/echo " bypass job-B tasks" >> /tmp/myjobs.log fi exec sleep 5 end script
リブート
- 確認する
cat /tmp/myjobs.log
か、sudo tail -f /tmp/myjobs.log
別のウィンドウで開きます。 - ジョブAを再度実行してください
sudo start joba
チェック
/tmp/myjobs.log
、バイパスの注記を参照:job-A started job-B started do job-B tasks job-B started bypass job-B tasks job-A started job-B started job-A started bypass job-B tasks
注記:実行ごとに 3 行あります。ここでの行のソートは重要ではありません。stdout
バッファリングの問題であり、upstart とは関係ありません。ジョブは正しい順序で実行されます。