この特集のトップページへ
この回のトップページへ

inittabオプションを知ろう

 「id」フィールドは,そのエントリを識別するための1文字,ないしは2文字のユニークな文字列を指定する。「rstate」では,そのエントリを実行するrun levelを指定する。例えば,そのエントリをrun level「2,3,4,5」で実行する場合,「2345」と記述する。「s」という文字列がついている場合,シングルユーザーモードの場合に実行される。

 「action」は,そのエントリの挙動を指定するもので,ここで指定されているものの内容は以下の通りである。

オプション 処理内容
initdefault initが最初に起動された時に実行される
sysinit initの起動後,特定のrun levelに移行する前に実行される
respawn プロセスが実行されていなければ実行される
wait 該当するrun levelに入ったらprocessを実行してその終了を待つ
powerfail initがSIGPWRシグナルを受けた時に実行される

 「process」フィールドは,そのエントリで実行されるプロセスを指定する。これらを総合すると,Solarisの起動時には,まずinitが起動され,

ap::sysinit:/sbin/autopush -f /etc/iu.ap
ap::sysinit:/sbin/soconfig -f /etc/sock2path
fs::sysinit:/sbin/rcS sysinit
           >/dev/msglog 2<>/dev/msglog </dev/console

が実行される。次の行が読み取られ結果としてrunlevel 3に移行する。

is:3:initdefault:

 さらに,次の行が読みとられ,必要なアプリケーションの起動などが行われる。

s2:23:wait:/sbin/rc2
                    >/dev/msglog 2<>/dev/msglog </dev/console
s3:3:wait:/sbin/rc3
                    >/dev/msglog 2<>/dev/msglog </dev/console

 最後には,次の行が読み込まれて完了する。

c:234:respawn:/usr/lib/saf/sac -t 300 co:234:respawn:
/usr/lib/saf/ttymon -g -h -p "`uname -n` console login: "
 -T sun-color -d /dev/console -l console -m ldterm,ttcompat

 スクリプトファイルの中を見てみよう。rcスクリプトの仕組みは次のようになっている。

 Solaris では起動時の初期化やサーバアプリケーションの起動などは,/etc/rc2.d,/etc/rc3.dの中にあるスクリプトで行われる。initによって実行される/sbin/rc2,/sbin/rc3は,それぞれ/etc/rc2.dや,/etc/rc3.d の中のスクリプトを実行するのだ。

 ここでは,実際に起動時の run level において,どのような処理が行われているのかを順を追って見ていき,その後で独自のプログラムの起動などを追加したい場合の方法を解説する。inittabによると,起動時のrun levelは「3」となっており,run levelが3の場合に実行される処理は次の2つである。

s2:23:wait:/sbin/rc2  >/dev/msglog 2<>/dev/msglog </dev/console
s3:3:wait:/sbin/rc3   >/dev/msglog 2<>/dev/msglog </dev/console

 /sbin/rc2 は,/etc/rc2.d の中のスクリプトを実行する。rc2.dディレクトリの中を確認すれば,実行されるサービスが確認できる。

% ls /etc/rc2.d/
K07dmi S40llc2 S73cachefs.daemon S80lp S94ncalogd K07snmpdx S47asppp S73nfs.client S80spc S95IIim K16apache S69inet S74autofs S85power S96ab2mgr K28nfs.server S70uucp S74syslog S88sendmail S99atsv README S71ldap.client S74xntpd S88utmpd S99audit S01MOUNTFSYS S71rpc S75cron S90loc.ja.cssd S99dtlogin S05RMTMPFILES S71sysid.sys S75savecore S90wbem S20sysetup S72autoinstall S76nscd S92volmgt S21perf S72inetsvc S80PRESERVE S93cacheos.finish S30sysid.net S72slpd S80kdmconfig S94Wnn6 %

PREV 5/8 NEXT