somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

起動スクリプトとLinuxの初期起動

今回のタイトルは、 普段なんとなく使っているコマンドやファイルが、初期起動設定に関係が深いことを知ったからです。 (apacheの初期起動設定をしているとき) まとめた内容 1.起動スクリプト(/etc/rc.d/init.d配下) 2.chkconfigと/etc/rc.d 3./etc/inittabの内容と2との関係 1.スクリプトを作成し、/etc/rc.d/init.dに置くこと。      このスクリプトは、シェルスクリプトである。   startやstopなどを引数に、開始・停止等が実行されるように組んでおく。   フォーマットなどの詳細は、分かっていない‥‥   スクリプトの配置により、serviceコマンドによる実行が可能となる。   フォーマット:service サービス名(スクリプト名) 引数   指定されたサービス名と同じ名前の/etc/rc.d/init.d配下のスクリプトを実行する。 2.作成したスクリプトに対応するサービスを登録する。   まず、「chkconfig --add スクリプト名」を実行する。   これによりスクリプトがサービスとして正しいかをチェックし、   正しかった場合にサービスとして登録をする。   このとき、/etc/rc.d/rc[0-6].d」([0~6]はランレベルに対応している)それぞれに、   スクリプト(/etc/rc.d/init.d/スクリプト名)に対するシンボリックリンクが作成される。   また、シンボリックリンク名は、「K」+「2桁の数字」+「スクリプト名」と設定され、一意になる。   先頭のKは、各ランレベルに移行するときにサービスを停止することを意味する。   つまり、サービス登録しただけでは初期起動は行われない。   起動するようにするためには、chkconfigを下記のように実行する。   「chkconfig スクリプト名 on」・・・ランレベル2~5に対する設定   「chkconfig --level 35 スクリプト名 on」・・・・ランレベル3と5に対する設定   (ランレベル0と1と6はずっとoffのまま)   onにすることで、シンボリックリンク名の先頭が「S」に変わり、サービス開始を意味する。   起動状態を確認するには、「chkconfig --list [スクリプト名]」   起動offにするには、上記のonをoffにするだけでよい。 3.inittabの内容を構文から読み取る   inittabの構文は以下のようになっている。   「id:runlevels:action:process」   id     :一意性のためのid   runlevels :ランレベルの指定。対応するランレベルのときにprocessを実行する   action   :process動作の指定   process  :実行するプロセス   一番身近な?ランレベルを指定するためのactionのinitdefault   id:3:initdefault:   2と関係のある項目   l0:0:wait:/etc/rc.d/rc 0   l1:1:wait:/etc/rc.d/rc 1   l2:2:wait:/etc/rc.d/rc 2   l3:3:wait:/etc/rc.d/rc 3   l4:4:wait:/etc/rc.d/rc 4   l5:5:wait:/etc/rc.d/rc 5   l6:6:wait:/etc/rc.d/rc 6   (waitは、processで指定したプロセスを起動し、終了を待つ、という意味。)   上記は、initdefaultで指定されたランレベルに対応するスクリプトが実行される。   rcスクリプトによって、/etc/rc.d/rc[0-6].d以下のシンボリックリンクに対応するスクリプトを実行される。   これにより、2で設定したスクリプトがinit時に実行されるので自動で起動するようになる。 以上。