デーモンへの登録方法とランレベルについて

このQ&Aのポイント
  • Solaris9を利用している場合、Webサーバのサービスをサーバ起動/再起動時に自動起動させるためにはデーモンへの登録が必要です。
  • ランレベルについては、起動するためにはrc2.dかrc3.dに登録する必要がありますが、どちらを選ぶかは判断基準が必要です。
  • また、サービスの停止については、どのランレベルに登録すべきかも重要です。これまで手動で起動していたサービスの場合、起動/再起動時は最後に起動し、停止時は最初に停止することが望ましいです。
回答を見る
  • ベストアンサー

デーモンへの登録(ランレベルについて)

Solaris9 を利用してます。 Webサーバのサービスをサーバ起動/再起動時に自動起動させたいためにデーモンへの登録を考えています。 しかし、ランレベルについて、イマイチよく分かりません。 起動するためには、rc2.d or rc3.d のどちらかに登録するという情報がネット上にありましたが、 判断基準としてどのように考えればよいのでしょうか? また、サービスの停止については、どこのランレベルに登録すべきなんでしょうか? 今までOSが起動してから手動で起動していたサービスのため、順番としては、 起動/再起動時:最後に起動 停止時:最初に停止 という流れになってくれればと考えています。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#227025
noname#227025
回答No.1

> 起動するためには、rc2.d or rc3.d のどちらかに登録するという情報がネット上にありましたが、 > 判断基準としてどのように考えればよいのでしょうか? http://docs.sun.com/app/docs/doc/817-7238/hbrunlevels-25516?l=ja&a=view 上記 Sun のマニュアルによると、 ・ランレベル 2 通常の運用に使用する。複数のユーザーがシステムとすべてのファイルシステムにアクセスできる。NFS サーバーデーモンを除く、すべてのデーモンが動作する。 ・ランレベル 3 NFS リソースを共有する通常の運用に使用する。Solaris 環境におけるデフォルトの実行レベル。 とのことなので、NFS サーバに依存するならランレベル 3 で、依存しないならランレベル 2 ということになります。 > また、サービスの停止については、どこのランレベルに登録すべきなんでしょうか? サービスの起動を登録した以外のランレベル全て。 > 今までOSが起動してから手動で起動していたサービスのため、順番としては、 > 起動/再起動時:最後に起動 上記の条件なら、rc3.d に S99.... で登録しておけばよいでしょう。 > 停止時:最初に停止 こちらは、rc3.d 以外の全て(rc[01256S].d)に K00.... で登録しておけばよいでしょう

MixNuts
質問者

お礼

ご回答、ありがとうございます。 起動については、理解できました。 NFSサーバに依存はしないので、rc2.d で設定を考えてます。 停止についてですが、 >>サービスの起動を登録した以外のランレベル全て。 との事ですが、rc2.d 以外となるのはなぜでしょうか? (rc2.dで設定することで何らかの不具合は発生するのでしょうか?) また、停止の場合、各ランレベルで複数回実行される可能性はあるのでしょうか? (例えば、rc5.d で停止コマンドが発生、  その後、rcS.d で再度、停止コマンドが発生など) 以上、よろしくお願いいたします。

その他の回答 (1)

noname#227025
noname#227025
回答No.2

>> また、サービスの停止については、どこのランレベルに登録すべきなんでしょうか? > サービスの起動を登録した以外のランレベル全て。 すみません、上記回答を訂正します。 サービスの起動を登録したランレベルとランレベル 3 以外の全てです。 これは以下の /etc/inittab の抜粋部分を見ると分かるのですが、rc2.d 以下のスクリプトは、ランレベル2, 3 両方で実行されるためです。 (つまりランレベル 3 に停止を設定してしまうと、ランレベル3 に切り替わった際に、折角 rc2.d で起動したサービスをとめてしまうことになるからです。) (/etc/inittab からの抜粋) s2:23:wait:/sbin/rc2 >/dev/msglog 2<>/dev/msglog </dev/console >> 停止時:最初に停止 > こちらは、rc3.d 以外の全て(rc[01256S].d)に K00.... で登録しておけばよいでしょう すみません、さらに訂正です。rc[56].d はそもそもありませんね。 ですので、以下の通り訂正します。 こちらは、rc3.d 以外の全て(rc[012S].d)に K00.... で登録しておけばよいでしょう > との事ですが、rc2.d 以外となるのはなぜでしょうか? 他のランレベルにスイッチしたときに停止を登録しておかないと、そのままサービスが起動し続けたままになってしまうからです。 > また、停止の場合、各ランレベルで複数回実行される可能性はあるのでしょうか? あります。 例えば、ランレベルを 3 → S → 5 とスイッチさせると、複数回実行されます。 しかし、既に停止したサービスに対して停止処理を行っても、結局サービスは停止したままなので、複数回実行されても問題ないです。 >(例えば、rc5.d で停止コマンドが発生、 > その後、rcS.d で再度、停止コマンドが発生など) 蛇足ですが、ランレベル5では電源断まで行ってしまうので、ランレベル 5 → S のスイッチはありえませんよ。

関連するQ&A

  • デーモンの登録について

    Solaris9のデーモンの登録について教えてください。 現在、以下の場所にスクリプトファイルが登録させています。  /etc/rc2.d/S99web-admin 今回、既存の S99web-admin の後に実行させたいスクリプトがあります。 そこで、 /etc/rc2.d/S98web-admin (Webサーバの管理用サービス:既存のものをS99からS98に変更する) /etc/rc2.d/S99web-server1 (Webサーバのサービス) のように変更・追加しようと思っています。 (質問1) これは「S98web-admin」が起動されるのを待ってから、「S99web-server1」が起動されるという動作になるのでしょうか? それとも、「S98web-admin」→「S99web-server1」の順番で起動されるだけで、実行される時間間隔はその時次第(不明)、 「S98web-admin」が起動されたかの確認は行わないということになるのでしょうか? ※条件としては、「S98web-admin」が起動していることを確認してから「S99web-server1」を起動したいと考えております。 (質問2) 上記のサービスをストップさせる場合、rc5(シャットダウン用)とrc6(再起動用)の両方に追加する必要があるということになりますか? また、ストップのスクリプトを登録しなかった場合、shutdownコマンドなどで、OSを再起動・シャットダウンした際の挙動はどのようになりますか? killコマンドで停止しても良いようなサービスであれば、わざわざデーモンに停止の登録をする必要はないものなのでしょうか? もしくは、根本的に考え方など間違っているような感じでしたら、その点もご指摘ください。 以上、よろしくお願いいたします。

  • ランレベルと起動スクリプト

    ランレベルと起動スクリプトとの関係について教えてください。 rc*.dというファイルについて色々調べているのですが、 下記の説明を見つけまして /etc/rc1.d/ ランレベル1の際の起動スクリプト /etc/rc2.d/, ランレベル2の際の起動 スクリプト /etc/rc3.d/, ランレベル3の際の起動スクリプト /etc/rc4.d/, ランレベル4の際の起動スクリプト /etc/rc5.d/, ランレベル5の際の起動スクリプト デフォルトでsolaris起動時にランレベル3になるような場合、 rc3.dの中のスクリプトを読みに行くのはわかるのですが、 他のrc2.dやrc1.dは読みに行かないのでしょうか?

  • Ubuntuのランレベルについて

    Ubuntuの10.10を使用しています。 そのマシンをサーバー機にしたくてXの起動をやめたいと思っていますが、 inittabもなくランレベルの変更もできません。 1.Xの起動や、その他サービスの停止は/etc/rc*.dの編集でよいのでしょうか? 2.そもそもランレベルという概念があるのでしょうか?あればそれを変更することは可能ですか? 以下コマンドを実行しましたが変化がありません。 # init 2 # init 3

  • Samba(デーモン)が起動しない

    今朝linux(RedHat Enterprise Linux)を起動したら共有がwindowsからみれなくなっていて /etc/rc.d/init.d/smb statusでSamba(デーモン)を確認したら smbdは停止しています。 nmbdは停止していますがPIDファイルが残っています。とでました。 /etc/rc.d/init.d/smb start で smbサービスを起動中:失敗 Nnmbサービスを起動中:OK /etc/rc.d/init.d/smb stop で smbサービスを起動中:失敗 Nnmbサービスを起動中:失敗 とでてしまいます。 きのうネットワーク設定のデフォルトゲートウェイを変更したからでしょうか? 業務ができません こまっています。 どなたか教えていただけないでしょうか。

  • デーモンを自動起動→tar解凍が行えない

    RHEL3を使っています。 とあるデーモンを起動するスクリプトを/etc/rc.d/init.d/に配置し、 chkconfig --addで登録してOS起動時にデーモンが自動起動するようにしています 更に、そのデーモンプロセスからシェルが実行されるのですが そのシェルの中でtar -xvf コマンドでtarファイルを解凍しようとしたとき 解凍が行えず、シェルスクリプトの動作もそのまま止まってしまう現象が発生しています。 現在確認している限りでは、デーモンの起動、シェルの起動は問題なく行えています。 また、デーモンを手動で立ち上げなおせば、tar解凍は問題なく行えるようになります。 以上の現象について、原因、解決方法など 何か情報がありましたら教えていただきたく、宜しくお願いします。

  • /etc/inittabのランレベル部分の記述について

    runlevelとは無関係にスクリプトを実行させたい場合は、::の部分に何もかかない? /etc/inittabに以下の記述があります。 本来ランレベルを書くべきところに何もかかれていません。 こういった場合、どういう動きをするのでしょうか? (ランレベルに関係なく起動時に実行される?) (manには該当の記述がみあたりませんでした。) rc::bootwait:/etc/rc si::sysinit:/etc/rc.d/bcheckrc

  • red hatの/etc/rc.dについて

    デーモンを再起動する場合、/etc/rc.d/init.d/配下にあるものをrestartしますが、 rc.dはrc1.dからrc.6dまでありまして、ランレベルってことですが、 具体的にどういう意味でしょうか。 普通再起動する場合は、どれを使うのでしょうか。

  • Solaris10で起動時に特定のデーモンを常駐させたい

    初心者です。 Solaris10の環境で、起動時に特定のデーモンを常駐させたいです。 どこでどのように指定すればいいのでしょうか。

  • デーモンバスターで複数サービスを停止させたら不具合

    通常XPを起動すると、デスクトップのアイコンなどが表示されていたのですが、デーモンバスターというフリーソフトで複数のサービスを停止させ起動するとデスクトップ上のアイコンがない(背景のみ表示)状態で起動します。 Ctrl+Art+Delでタスクマネージャを表示させると アイコンがでてきます。 この不具合を復旧させる手順をおわかりになるかた いらっしゃいませんか?(システムの復元ではだめでした) デーモンバスターで停止しているサービスを開始にすると デーモンバスターが応答しなくなってしまいます。

  • サービスの停止について

    サービスとして、 ・管理サーバ ・Webサーバ1 の2つがあります。 各々のサービスをサーバマシン停止時に自動で終了するスクリプトを作成して、デーモンに登録しようと考えています。 その時の条件として「Webサーバ1」を停止する際は、「管理サーバ」が起動している必要があります。 デーモンに、 ・K01_Webサーバ1 ・K02_管理サーバ と登録した場合、スクリプトで制御しない限り、「Webサーバ1」が終了されたことを確認される前に 「K02_管理サーバ」の終了コマンドが実行されてしまうことがあるかと思います。 (1)まず上記の認識は正しいですか? そこで、「K02_管理サーバ」のスクリプトで「Webサーバ1」が終了したかどうか確認するスクリプトを追加して サービスが終了するまでに3分かかったとします。 (2)その場合は、サーバマシンの停止までの時間も通常より3分長くかかってしまうという事になりますか?  (例えば「Webサービス1」の停止がいつまで経っても終わらないような場合は、そこで止まってしまうという  リスクも発生することになるのでしょうか?)   それとも一定時間で強制的に終了されるものですか? 通常、サーバ再起動は「/usr/sbin/shutdown -i6 -g0 -y」を実行して行っています。    よろしくお願いいたします。