• ベストアンサー

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

ランレベルと起動スクリプトとの関係について教えてください。 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は読みに行かないのでしょうか?

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

  • ベストアンサー
  • dyna_1550
  • ベストアンサー率34% (122/353)
回答No.2

確認方法は、パッと思いつくのは 1) docs.sun の Solaris9 のシステム管理を読む http://docs.sun.com/app/docs/doc/817-4909/6mkdd9iil?l=ja&a=view 2) ブートプロセスのシェルを追う  /etc/inittab  -> /sbin/init -> /sbin/rc* ( rc0 とか rc1 とか・・)  この順でシェルが呼ばれますので、丁寧に追えばわかるかも。 3) 起動、停止シェルを置いてみる  runlebel3 で起動するマシンのrc2やrc1に、ログをはくだけなどの  みせかけの起動シェルを置いてみてはいかがでしょう。 たしかに、僕も昔、疑問に思ったことがありますが、よくわからず 今に至っていますので、逆に結果を知りたいです。

masashissu
質問者

お礼

結果報告が遅くなってすいません、 3の方法をいただきまして、実施してみました。 デフォルト3で起動した際にrc2.dのスクリプトも読み込んでました。。。 rc2.dの配下にduplexとlink_speedの設定コマンドを入れたスクリプトを配置して、再起動したら見事に設定されたlink_speedに変わっていました。 う~~~ん、色々なサイトで回って 通常は、/etc/rc.d/rc3.d または /etc/rc.d/rc5.d 配下の 各スクリプトが実行される事になります。と載っていたので、たぶん読み込まないないよなぁ~・・・と思ってやってました、。。。 大変参考になりました。ありがとうございます。

masashissu
質問者

補足

3の方法いただきました! 明日、時間があればやってみます。

その他の回答 (2)

  • 3899
  • ベストアンサー率54% (65/119)
回答No.3

こんにちは 簡単に… solarisのブート処理 poweron→POST→カーネル→initプログラム→sac、ttymon→login: となります。 この流れの中でinitプログラムのところで/etc/inittabファイルを参照して起動スクリプトを実行します。 /etc/inittabファイルを見て下さい。 1行目のエントリから順に実行されます。 マルチユーザの場合、4行目のinitdefaultのところで、第2フィールドが「3」を実行する指定になっています。 s2、s3、sc、coを実行します。 質問者様が言われている、ランレベル2と3を実行するということです。

masashissu
質問者

お礼

お返事が遅くなりました。 おっしゃる通り、実行されました。 ネットなどを見て勘違いしていたようです。ありがとうございました。

  • dyna_1550
  • ベストアンサー率34% (122/353)
回答No.1

Solarisのバージョンは、Solaris10と考えていいでしょうか? 起動するアプリケーションの管理は、rcの管理から、SMFというものに 切り替わろうとしています。 以下のSUNのドキュメントを読むことをお勧めします。 Solaris のシステム管理 (基本編) http://docs.sun.com/app/docs/doc/819-0378/hbsysboot-41054?a=view rcは、/etc/rc* というシェルスクリプトにより起動されます。 裏覚え(だったら書くなと怒られそうですが)ですが、  rc0 -> rc1 -> rc2 -> rc3  (runlevel3 の場合) と呼ばれるものだったと記憶しています。

masashissu
質問者

お礼

ご回答ありがとうございます、 すいません、solaris9を使用しています。 >裏覚え(だったら書くなと怒られそうですが)ですが、 > rc0 -> rc1 -> rc2 -> rc3  (runlevel3 の場合) もしこれが正解なら、私の悩みが一気に解決します。 色々なサイトをめぐっているのですが、rc.2はrunlevel2で読み込まれるとしか記載がなくて、なかなか解決に導けません。 本当に確認したいことは、職場で使用しているsolaris9の装置にrc2.dに入っている起動スクリプト以外に、インターフェイスのduplex,speedの設定などが見当たらなかったので調べていました。 /etc/systemなど色々な設定を確認しましたが設定されておらず、他の起動スクリプトにも入っていなかった為、rc2.dがrunlevel3で読み込まれるのであれば一気に解決します! 何か確認する方法や、どこかに詳細が記載されているサイトなどありましたら教えてください!

関連するQ&A

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

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

  • Ubuntu10.04でのランレベル変更

    失礼します。 質問内容は上の通りで、Ubuntu10.04でのランレベルの変更方法を教えて下さい。 現在、デフォルトのランレベル2のGUIで使用していますが、 これをCUIに変更しようと考えています。 調べてみると、Ubuntuの場合は、 まず、/etc/init/rc-sysinit.confでデフォルトのランレベルを3に変更し、 次に、sysv-rc-confをインストールして、それを用いてランレベル3のgdm、xserver-x$のチェックをはずして、再起動すればCUIになるとありました。 ただ、これを実行しようとしたところ、sysv-rc-confでxserver-x$の項目が見つからずどうすれば良いか悩んでいます。 どなたかご教授いただけないでしょうか?

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

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

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

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

  • Linuxでの起動スクリプトの設定方法について

    Ubuntu10.04で、/etc/init.d/ の下に自作の起動スクリプトファイルを置いて、OS起動時にアプリが起動するようにしたいです。 Linuxについてはほぼ素人なので、ネット等で適当にスクリプトの書き方や設定方法を調べて、以下のような手順で実施してみましたが、うまく起動しませんでした。 以下に私が実施した手順を記載しますので、原因がわかる方、教えていただけませんでしょうか? (1)以下のスクリプトを書いたファイル(例えば"start_eclipse")を /etc/init.d/ の下に配置する。 #!/bin/bash start() { echo -n "Starting eclipse: " /opt/eclipse/eclipse return 0 } stop() { killproc eclipse return 0 } case "$1" in start) start ;; stop) stop ;; esac (2)Terminalで以下のコマンドを実行。(ランレベルや優先順位はデフォルト値に任せています) $ sudo su # chmod 755 /etc/init.d/start_eclipse # update-rc.d start_eclipse defaults (3)Ubuntuを再起動して確認。⇒アプリ(この場合はeclipse)は起動しませんでした。 私としてはスクリプトの書き方が間違っているのではないかと予想しているのですが、スクリプトについてネットで調べると、今回のような単純なアプリ起動・終了方法についての情報があまり載っていない(と思う)ため、自力では間違い箇所が発見できませんでした。 ついでと言ってはなんですが、起動スクリプトの書き方や設定方法について参考になるサイトがありましたら、そちらも教えていただけましたら幸いです。 以上、宜しくお願い致します。

  • solaris8でtomcatの自動起動

    solaris8でのtomcatの自動起動を考えています。 そこで/etc/init.dにrcスクリプトを置こうと思っているのですが 中身をどのように書いたらいいかわかりません。 apacheやqmailのスクリプトを参考にしてみても どうもうまくいきません。 特に環境変数の設定をどうすればいいのか・・・。 どなたかsolaris8でのtomcatの自動起動に 成功されている方、アドバイスを頂けないでしょうか? よろしくお願いします。

  • 起動スクリプト

    Mysql5系で起動スクリプトは以下のように設定しています。 #cat /etc/rc.d/rc.local if [ -x /usr/local/mysql5.0/bin/mysqld_safe ]; then /usr/local/mysql5.0/bin/mysqld_safe --user=mysql & fi これではpsで消すとかしか停止などができないので起動スクリプトを 作成したいのですが、作成方法がよくわかりません。 もし、Mysql5系で起動スクリプトを作成するとしたらどんな感じになるのでしょうか? できれば、START, STOPなども表示させるようにしたいのですが。。。

    • ベストアンサー
    • MySQL
  • LPI問題集の起動の問題の答え

    /etc/rc.d/rc3.dディレクトリ内のファイルについて、以下の説明が正しいか誤っているかを答えなさい 「Kで始まるファイルは、実行されないスクリプトファイルである」 ↑の答えを教えてください。

  • sshdが自動起動するのは何故?

    Ubuntu(Linux)がよくわかっていない者です。 Ubuntu(10.04)をインストールしました。 その後に、Windows PCからリモート管理できるように、openssh-serverパッケージをインストールしました。そして、sshでリモート接続できるようになりました。 ただ、Ubuntuを起動すると何故 sshdが自動的に起動されるのかその仕組みがわかりません。 Apache HTTP Server(apache2)の場合、"sysv-rc-conf --list apache2"で確認すると、ランレベル2, 3, 4, 5がONになっていますし、/etc/rc5.d/S91apache2 等があるので自動的に起動するのは納得できました。 しかし、sshdについては /etc/rc5.d/ディレクトリなどにその起動スクリプトは見つかりませんでした。 どのような仕組みでsshdは自動起動されるのでしょうか?

  • Linux 起動スクリプト(shell)

    Linux(CentOS5)で自作の起動スクリプトを作成しているのですが、 うまく動作しません。 /etc/rc.d/init.d配下にスクリプトを設置し、さらに起動スクリプトから /usr/local/lib/sssの外部ファイルを読込んでいます。 その外部ファイルは、iniファイルの設定がtrueの場合、 whileで回る仕組みになっています。(sleep 何秒毎に動くか制御しています) httpdのように常駐起動させたいのですが、どのようにすればいいのでしょうか? 実行すると処理が止まってしまいます。 ■起動スクリプト /etc/rc.d/init.d/aaa ← 起動スクリプト           |― function読込           |― ネットワーク設定読込           |― INIファイル読込み           |― 外部スクリプト実行 ■実行ファイル /usr/sbin/aaa ← 実行ファイル           |― 外部スクリプト読込           |― 外部スクリプト実行 ■外部ファイル           |― 外部ファイル処理起動           |― INIファイルがtrueの場合、whileによりループされる。 -------------------------------------------- /etc/rc.d/init.d/aaa ← 起動スクリプト start() { if [ "${path}" = "true" ]; then KIND="aaa" echo -n $"Starting $KIND services: " daemon aaa ${option} test RETVALaa=$? echo [ $RETVALaaa -eq 0 ] && touch ${LOCKPATH}/${SERVICE_NAME}test || \ RETVALaa=1 return $RETVALaa fi (省略) -------------------------------------------- /usr/sbin/aaa ← 実行ファイル case $1 in "-D" ) case $2 in "test" ) sh ${path}/aaa > /dev/null & ;; * ) ;; esac ;; * ) echo $"Usage: $0 {start|stop|restart|reload|status|condrestart}" exit 2 esac exit 0 (省略) -------------------------------------------- ■外部ファイル if [ "${SETTING}" = "true" ]; then while : do #メイン処理 (省略) sleep ${SLEEP} done #設定がfalseの場合、何もしない elif [ "${SETTING}" = "false" ]; then echo -e "${CONFIG_FALSE}" sleep ${SLEEP} exit 10 #設定が未知のものなら、終了する else echo -e "Error: ${CONFIG_ERROR}" exit 12 fi # 終了 exit 0