Ubuntuはしばらくの間upstartに依存しているので、upstartジョブを使用して、システムのシャットダウンまたは再起動時に特定のアプリケーションを正常にシャットダウンしたいと思います。これらのアプリケーションがシャットダウンされるまで、システムのシャットダウンまたは再起動が停止することが不可欠です。
アプリケーションは時々手動で開始され、システムのシャットダウン時にはスクリプト(私がすでに持っている)によって自動的に終了する必要があります。 (ほぼすべての)他のサービスが実行されていないとアプリケーションを確実に終了できないため、残りのシャットダウンを開始する前にアプリケーションを終了する必要があります。
シャットダウン時にトリガーされるupstartジョブでこれを解決できると思いますが、どのイベントをどのように使用すればよいかわかりません。これまでに、次の(部分的に矛盾する)ステートメントを読みました:
- upstartには一般的なシャットダウンイベントはありません
start on starting shutdown
のようなスタンザを使用します ジョブ定義内-
start on runlevel [06S]
のようなスタンザを使用します ジョブ定義内 -
start on starting runlevel [06S]
のようなスタンザを使用します ジョブ定義内 -
start on stopping runlevel [!06S]
のようなスタンザを使用します ジョブ定義内
これらの推奨事項から、次の疑問が生じます。
- Ubuntuのスタートアップに一般的なシャットダウンイベントはありますか、ありませんか?
- 「シャットダウンフック」を実装するための推奨される方法は何ですか?
- イベントのランレベル[x]はいつトリガーされますか。これは、ランレベルに入ったときですか、それともランレベルに入ったときですか?
-
start on starting runlevel [x]
のようなものを使用できますか またはstart on stopping runlevel [x]
の停止を開始します ? - 私の問題の最善の解決策は何ですか?
どうもありがとうございました
承認された回答:
starting
およびrunlevel
は個別のイベントであるため、starting runlevel N
と意味のある言い方をすることはできません。 。
runlevel N
イベントは、ランレベルに入る開始時に発行されます。 start on runlevel N
する場合 その後、タスクはエントリ時に実行されます。ランレベルへのエントリが完了したときに実行する方法は、run on started rc RUNLEVEL=N
で実行することです。 。
私が理解しているように、start on runlevel [06S]
で開始する必要があります あなたがやりたいことをするために;理論的には、他の何かが停止する前に実行する必要があります。より細かく制御するには、start on stopping apache or stopping mysql or ...
を使用できます。 いずれかのタスクがシャットダウンされる前にタスクが実行されるようにします。
ランレベル5をSに変更するように編集しました。