この問題はしばらく私を悩ませました。私たちはSolarisからサービスとしてよく管理されたプログラムを実行しています。シングルモード光ファイバ、簡単に有効/無効にできます。
私たちの市場によれば、このサービスをRHEL 6.3に移行しようとしているので、Upstartを使用してそれを管理し、Solarisと同じように動作しようとしています。ほとんどの動作は良好で要件を満たしていますが、サービスを停止しても起動時に自動的に開始されますが、これは私たちが望むものではありません。サーバーを停止した後、サーバーを数回再起動またはシャットダウンしても、サーバーが停止したいと思います。
この記事を読みましたが、Ubuntu 12.04:起動時にデーモンを無効にする方法この機能はUpstart 1.3を使用して行うことができますが、Upstartパッケージのバージョンが0.6.7のRHEL 6.3のみが利用可能であり、最も重要なのはUpstartをアップグレードしたり、他のプラットフォームに切り替えることができないことです。 :(
したがって、私の質問は次のようになります。私の目標を達成する他の方法はありますか?ただし、システムを変更せずに依存関係を導入せず、サービスはシステムで管理する必要があります(例:SMF / Upstart / init.d)。
これには1つの要件があります。ユーザーがサービスプロセスを終了すると、システムがそれを検出して自動的に上限回数だけプロセスを開始しようとする機能を実装したいと思います。指定。
SMFリファレンス:
Oracle Solaris 11のサービス管理機能(SMF)の基本について Oracle Solaris 11でのSMF(サービス管理機能)による高度な管理
答え1
ReHatなどのrpmベースのシステムでchkconfig
ランレベルを設定するために使用されます。service
実行中のシステムで処理されます。
RH 6でサービスを永久に停止するには:
service xyz stop
chkconfig xyz off
SMFはそれよりはるかに複雑です。モニタリング、再起動などのタスクを実行するため、通常はクラスタソフトウェアで実行されるタスクを実行しているようです。
クラスタソフトウェアは通常、システム制御からサービスを取得し、クラスタ制御に提供します。このサービスは、クラスタの起動時に開始されます。
次のコマンドが表示されることがあります。
- サービスの停止(一度または永久的に)
- 監視サービスのみ
- モニターが予期しない停止状態を返した場合、正常なクラスター動作によりサービスが再開される可能性があります。
クラスタースイート全体を追加したくない場合は、いくつかの解決策があります。
- サービスを停止し、計画されたダウンタイムフラグをヒットするには、initスクリプトに「pstop」メソッドを追加します。
- サービスを監視し、サービスが失敗し、計画されたダウンタイム内にない場合は、サービスを再起動するクローンジョブを作成します。
- 計画されたダウンタイムフラグがある場合は、削除されるようにinitスクリプトの "start"メソッドを変更します。
答え2
RHELに移行するには、次を使用します。RHELマニュアル参考までに - UbuntuのUpstartドキュメントを読んでもそれほど役に立ちません。 InitシステムはLinuxディストリビューションの重要な部分の1つであり、ディストリビューション自体の不可欠な部分です。さまざまなベンダーが特定のレベルの互換性を達成するように努力することがよくありますが、他のディストリビューションのドキュメントを読むのは良い考えではありません(特に他のUNIXシステムから移行する場合)。
RHELはSysV init互換モードでupstartを使用するため、このコマンドを認識できますservice
。ところで、入力してみてください。RHELサービス管理お気に入りの検索エンジンを入力してください。これにより、合理的な読書資料が十分に提供されます。