rc init.d で自動起動

自動起動
/etc/init.d/に自動起動したいスクリプトを置くことでできる。

/etc/rc0.d/の下に/etc/init.dへのシンボルリンクを貼ることで
ランレベルごとの起動を制御できる。

シンボルリンクは
S + 二桁の数字 + ファイル名 みたいなかんじで
httpdの場合は
S85httpd
Sはサービス
KはKill(停止したい)サービス
のようにする。

85は起動順の制御に使われる。低い数字から順に実行されてく。

例として
sampledamonを作ってみる体で話す。
まずsampledamonをつくる。
startとかstopとかの引数は必須か?
/etc/init.d/
に配置


これだけではsampledamonは起動されない。
明示的にどのランレベルで実行するか指定して初めて動く

rc2.dとrc5.dで走らそうか。
それぞれにシンボルリンクをつくる。

ランレベルのまとめ
distributionのよって少し違うがこんな感じ。wikiによくまとめられている。(http://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%B3%E3%83%AC%E3%83%99%E3%83%AB
UNIX System V Releases 3 および 4
0 - シャットダウンを実行。ハードウェアがサポートしている場合、そのまま電源を切る。コンソールからのみ実行可能。
1 - シングルユーザーモード。root 以外のファイルシステムはマウントされない(既にマウントされていたらアンマウント)。コンソールプロセス以外のプロセスを終了させる。
2 - マルチユーザーモード
3 - マルチユーザーモード + RFS(Release 4 では NFS も)のファイルシステムをエクスポート
4 - マルチユーザー、ユーザー定義
5 - オペレーティングシステムを停止し、ファームウェアへ移行
6 - システムを停止し、デフォールトランレベルを再起動
s, S - 1 と同じだが、現在の端末がコンソールとなる。



rcSってなに?
Debian系だと
rcSはinitスクリプト(ブート終了後最初に起動されるスクリプト)が起動されて、最初に/etc/init.d/rcSが実行される。
rcSは/etc/rcS.dにはいってるスクリプトをすべて起動する。


そのあと/etc/inittabでランレベルが指定されているのでそれを見て
ランレベルを決定それに、対応するrc?.dのスクリプトをすべて起動。


という順だ。ただubuntuで/etc/inittabがなかったので、何が同じ用途に使われているのだろう?
=>/etc/event.d/rc-defaultが使われます。いや、ごめん。これもなかった。Ubuntuのinit以降の起動シーケンス(図入り) – upstart /etc/event.d/ initctl(http://wps.watanet.mydns.jp/2009/06/27/ubuntu%E3%81%AEinit%E4%BB%A5%E9%99%8D%E3%81%AE%E8%B5%B7%E5%8B%95%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9%E5%9B%B3%E5%85%A5%E3%82%8A-upstart-etcevent-d-initctl
をよませていただきたい。

ということで、まず、rcS.d ほんで、rc?.dという順なんですね。
大変よくわかりました。

参考:http://greenonions.blog5.fc2.com/blog-entry-25.html

ちなみにランレベル

$ runlevel
N 2

っていうコマンドでわかります。
ディフォルトのランレベルは2です。
Nは変更前のランレベルで、NはNoneかな、まだ一回も変更されてないのがわかる。


rc.localってなに?


参考にしたのは、
http://www.atmarkit.co.jp/ait/articles/0206/04/news001.html

init.dとinitって違う?
他にも
Ubuntu Server における/etc/initと/etc/init.dの違いとserviceコマンドの関係 はSys VとUpstartっていう流儀の違いを吸収するためのserviceコマンドってことがわっかって良かった。