6.3 サービスの実行
ランレベルとサービス
 5章では起動時に /etc/inittab の設定にしたがって init コマンドが実行され, ランレベルという起動するモードがあることを説明しました. ここではそのランレベル毎に起動されるサービスについて確認します.
 起動時に実行される処理はたくさんありますがそのほとんどはシェルスクリプトによって制御されています. ランレベルに応じて実行されるシェルスクリプトは "/etc/rc.d" ディレクトリにランレベル毎にディレクトリに分かれて用意されています.

[student]$ ls /etc/rc.d
init.d  rc.local    rc0.d  rc2.d  rc4.d  rc6.d
rc      rc.sysinit  rc1.d  rc3.d  rc5.d
[student]$				

各ディレクトリにはサービスを起動するためのシェルスクリプトが用意されています.

[student]$ ls /etc/rc.d/rc3.d/
K14alsasound  K92ipchains  S12syslog  S35identd      S75keytable  S90xfs
K20nfs        K99hotplug   S16apmd    S40atd         S80postfix   S92canna
K35medusa     S05kudzu     S18autofs  S40crond       S85gpm       S99local
K45arpwatch   S08iptables  S20pcmcia  S56rawdevices  S90FreeWnn   S99xinitrc
K45irda       S10network   S20random  S56xinetd      S90kondara
K83ypbind     S11portmap   S25netfs   S60lpd         S90rskkserv
[studnet]$					

 各ディレクトリにあるファイルは少しず変わっていて, ファイル名が K で始まっているものはそのランレベルでは実行されず, S で始まっているものだけが 実行されるようになってます.
 実際にはこれらは /etc/init.d にあるシェルスクリプトへのリンクになっています(ファイル名だけが存在し, ファイルの実態は /etc/init.d に存在します).

サービスの起動
 ランレベルとは Linux を動作させる環境に応じて番号が設定されており,その環境で動かすアプリケーションなどを設定できます.

 ランレベルの分類は次のようになっています.

ランレベル モード 説明
0 システムの停止モード システムを停止するときに指定
1 シングルユーザモード システムを1人で占有するときに指定
2 マルチユーザモード
(ネットワーク機能なし)
システムを複数ユーザが利用するときに指定
3 マルチユーザモード システムを複数ユーザが利用するときに指定.
ログインはテキストベース
4 カスタムモード 起動するサービスを自由に設定できる
5 マルチユーザモード システムを複数ユーザが利用するときに指定.
ログインは GUI ベース
6 システムの再起動モード システムをリブートするときに指定

 通常起動時にはランレベル 3 または 5 が使われます.

 ランレベルによって起動されるサービスを確認するには chkconfig コマンドを使います.--list オプションの後にサービス名を指定するとそのサービスのランレベル毎に起動されるかを確認できます. サービス名を指定しないと用意されているサービス全ての設定状況を確認できます.

[student]$ /sbin/chkconfig --list network
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
[student]$ /sbin/chkconfig --list
atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
gpm             0:off   1:off   2:on    3:on    4:on    5:on    6:off
lpd             0:off   1:off   2:on    3:on    4:on    5:on    6:off
nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
xfs             0:off   1:off   2:on    3:on    4:on    5:on    6:off
apmd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
ldap            0:off   1:off   2:off   3:off   4:off   5:off   6:off
xinitrc         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rskkserv        0:off   1:off   2:off   3:on    4:on    5:on    6:off
canna           0:off   1:off   2:off   3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
httpd           0:off   1:off   2:off   3:on    4:on    5:on    6:off
kudzu           0:off   1:off   2:off   3:on    4:on    5:on    6:off
netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
rusersd         0:off   1:off   2:off   3:off   4:off   5:off   6:off
rawdevices      0:off   1:off   2:off   3:on    4:on    5:on    6:off
autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
identd          0:off   1:off   2:off   3:on    4:on    5:on    6:off
medusa          0:off   1:off   2:off   3:off   4:off   5:off   6:off
pcmcia          0:off   1:off   2:on    3:off   4:on    5:off   6:off
random          0:off   1:off   2:on    3:on    4:on    5:on    6:off
rstatd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
rwalld          0:off   1:off   2:off   3:off   4:off   5:off   6:off
syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off
ypbind          0:off   1:off   2:off   3:off   4:off   5:off   6:off
hotplug         0:off   1:off   2:off   3:off   4:off   5:off   6:off
FreeWnn         0:off   1:off   2:on    3:on    4:on    5:on    6:off
portmap         0:off   1:off   2:off   3:on    4:on    5:on    6:off
postfix         0:off   1:off   2:on    3:off   4:on    5:off   6:off
keytable        0:off   1:off   2:on    3:on    4:on    5:on    6:off
alsasound       0:off   1:off   2:off   3:off   4:off   5:off   6:off
xinetd based services:
        ftp:    on
        auth:   off
        echo:   off
        exec:   off
        tftp:   off
        time:   off
        daytime:        off
        login:  off
        shell:  off
        chargen-udp:    off
        netstat:        off
        telnet: off
        systat: off
        daytime-udp:    off
        time-udp:       off
        echo-udp:       off
        chargen:        off
[studnet]$				

 最後に表示されている xinetd based services はポートを監視して要求がある度に実行されるサービスの設定です.

 chkconfig コマンドを利用するとランレベル毎のサービスの実行や停止の設定ができます.
 起動時のサービスを停止する場合には --level オプションでランレベルと停止のための引数 off を指定します. 例えば network をランレベル 3 では起動しないようにするには次のようにします.

[root]# /sbin/chkconfig --level 3 network off
[root]# /sbin/chkconfig --list network
network         0:off   1:off   2:on    3:off   4:on    5:on    6:off
[root]#				

 同様に network をランレベル 3 で起動するようにするには次のようにします.

[root]# /sbin/chkconfig --level 3 network on
[root]# /sbin/chkconfig --list network
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root]#