GNU/Linux >> Linux の 問題 >  >> Ubuntu

シャットダウンフックを作成する最良の方法は?

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に変更するように編集しました。


Ubuntu
  1. リブートサバイバル–ベストプラクティス

  2. リブートサバイバル–ベストプラクティス

  3. Centos –永続的なルートを追加するための最良の方法は?

  1. シェルの歴史を検索する最良の方法は?

  2. リモートフォルダをマウントする最良の方法は?

  3. シェルスクリプトを常にルートとして実行する方法は?

  1. コンピューターでUbuntuをテストする最良の方法は?

  2. ビデオファイルをDVDに書き込むための最良の方法は何ですか?

  3. Linux の「shutdown」、「poweroff」、「halt」、「reboot」コマンド