最終更新日 2005/06/01
ランレベル
ランレベルとは
ランレベルの種類
ランレベルの表示と変更
デフォルトのランレベル
ランレベルとデーモン
ランレベルの制御コマンドランレベルとは
GNU/Linuxシステムは、システムの動作モードが複数存在します。このモードのことを"ランレベル"と呼びます。ランレベルは、ランレベル0からランレベル6までの全部で7つランレベルが存在します。
しかし、ランレベルの定義は、UNIXやGNU/Linuxディストリビューションによって若干(又は大きな)違いがあります。
例えば、Fedora Core(RPM系)の場合、ランレベル3はマルチユーザモード(テキストログイン)で、ランレベル5はマルチユーザモード(グラフィカルログイン)になります。
デフォルトのランレベルは、3か5である。テキストかグラフィカルかによってランレベルが違ってきます。
一方、Debian GNU/Linux(Debian系)では、デフォルトのランレベルは2になり、テキストログインでもグラフィカルログインでも変わりはありません。
ランレベルの種類
ここではFedora Core(RPM系)の場合のランレベルについて説明をします。まず、ランレベル0は停止の状態を表します。電源が入っていないPC(Fedora Core)の状態です。
ランレベル1は、シングルユーザモードになります。シングルユーザ(root)だけがログインできる状態です。
また、ランレベル1では、ほとんどのデーモン等は起動しません。ネットワークも使用できませんので、主にメンテナンス時に使用されます。
ランレベル2から、シングルユーザモードではなく、GNU/Linuxシステムの特徴でもあるマルチユーザモードになります。
ランレベル2ではネットワークの使用はできますが、NFS(Network File System)の利用はできません。
ランレベル3は、マルチユーザモードでテキストログインになります。
シェルだけのシンプルな画面です。GUI(X Window System)をインストールしていなければ、ランレベル3がデフォルトのランレベルです。
サーバ用途で使用する場合は、通常Xをインストールしない(使わない)ので、サーバ機のほとんどはランレベル3になります。
ランレベル4は使用されていません。ユーザ定義のランレベルとして使用することは可能です。
ランレベル5は、グラフィカルログインのマルチユーザモードです。X Windows Systemをインストールするとデフォルトのランレベルは5になります。
クライアントとして利用する場合は、X Windows Systemを利用しますので、ランレベル5を利用しています。
最後にランレベル6は再起動の状態を表します。
ランレベル(Fedora Core)
| ランレベル | 説明 |
| 0 | 停止の状態 |
| 1 | シングルユーザモード |
| 2 | マルチユーザモード(NFS使用不可) |
| 3 | マルチユーザモード(テキストログイン) |
| 4 | 使用なし(ユーザ定義で使用可能) |
| 5 | マルチユーザモード(グラフィカルログイン) |
| 6 | 再起動の状態 |
ランレベルの表示と変更
現在のランレベルを表示するには、「runlevel」というコマンドを使用します。runlevelコマンドでは、現在のランレベルと一つ前のランレベルが表示されます。デフォルトのランレベルから移行がない場合は"N"と表示されます。
また、ランレベルの変更には、「init」又は「telinit」というコマンドを使用します。
「init」又は「telinit」の後にスペースを入れてランレベルの数字を入力すると、そのランレベルへと移行することができます。
当然、X Windows Systemが入っていなければランレベル5への移行はできません。
ランレベルの表示(runlevelコマンド)
1: # runlevel 2: N 3 |
- runlevelコマンドで現在と一つ前のランレベルを表示
- "N"と3が表示されているのでデフォルトのランレベル3からの移行はない
1: # telinit 5 2: # init 3 |
- ランレベル5へ移行
- ランレベル3へ移行
デフォルトのランレベル
デフォルトのランレベルは、変更することができます。デフォルトのランレベルの変更は「/etc/inittab」ファイルで行います。
GNU/Linuxを起動するとカーネルは、"init"と呼ばれるすべてのプロセスの親にあたるプログラムを最初に起動します。
この"init"は「/etc/inittab」に記述されている内容にしたがって、プログラムを起動していきます。
「inittab」ファイルには、デフォルトのランレベルの指定以外にも、各ランレベルで起動するデーモンの設定などが記述されています。
デフォルトのランレベルの設定は、最初に有効になっている行の「id:3:initdefault:」の部分になります。
書式は、「id:ランレベル:アクション:プロセス」となります。ランレベルの箇所の数字を変更することによってデフォルトのランレベルを変更することが可能です。
アクションの「initdefault」は起動時のランレベルの指定です。起動時のランレベルの指定時にはプロセス欄は必要ではありません。
デフォルトのランレベルを3にする場合は「id:3:initdefault:」、5にする場合は「id:3:initdefault:」と記述します。
# # inittab This file describes how the INIT process should set up # the system in a certain run-level. # # Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org> # Modified for RHS Linux by Marc Ewing and Donnie Barnes # # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:3:initdefault: # System initialization. si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 〜省略〜 |
次回、起動したときから設定したデフォルトのランレベルが適用されます。
ランレベルとデーモン
デーモン制御スクリプト
ランレベルによって、起動するデーモンを制御することができます。例えば、ランレベル3では起動しないがランレベル5では起動するように設定することが可能です。
各デーモン(Apacheはhttpd、OpenSSHはsshd)の制御スクリプトは、「/etc/rc.d/init.d/」ディレクトリ以下に配置されています。
ただし、ソースファイルからインストールした場合は違います。
各デーモンの制御スクリプト
# ls /etc/rc.d/init.d/ FreeWnn cups irqbalance netfs readahead syslog NetworkManager diskdump isdn netplugd readahead_early vsftpd acpid dund kdcrotate network rhnsd xfs anacron functions killall nfs rpcgssd xinetd apmd gpm kudzu nfslock rpcidmapd ypbind atd haldaemon mDNSResponder nifd rpcsvcgssd yum autofs halt mdmonitor nscd saslauthd bluetooth hidd mdmpd pand sendmail canna iiim messagebus pcmcia single cpuspeed iptables microcode_ctl portmap smartd crond irda netdump psacct sshd |
制御スクリプトとランレベル
各デーモンの制御スクリプトがあるのは、「/etc/rc.d/init.d/」ディレクトリになります。そして、各ランレベルごとに起動するスクリプトは、「/etc/rc.d/rc<ランレベル>.d/」ディレクトリに配置されます。
ランレベル0からランレベル6までディレクトリが用意されています。
# 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 |
例えば、ランレベル3の場合に起動(あるには起動しない)デーモンのスクリプトは、「/etc/rc.d/rc3.d/」に配置されています。
「/etc/rc.d/rc3.d/」内にあるファイルは、制御スクリプト本体ではなく、制御スクリプトのシンボリックリンクになっています。
また、ある一定の規則にしたがってファイル名がつけられています。
ファイル名の最初に「S」がつくものが自動起動します。「K」の場合は自動起動しない設定になります。
"S"や"K"の後に続く数字は起動の優先順位です。数値が若いほど早く起動することになります。数値のあとは各デーモン名です。
この名前の規則にしたがってファイル名を変更することによって、起動の制御が可能になります。
rc3.dディレクトリ(シンボリックの確認)
# ll /etc/rc.d/rc3.d/ 合計 204 lrwxrwxrwx 1 root root 13 2月 24 18:20 K01yum -> ../init.d/yum lrwxrwxrwx 1 root root 24 2月 24 18:20 K02NetworkManager -> ../init.d/NetworkManager lrwxrwxrwx 1 root root 19 2月 24 18:17 K05saslauthd -> ../init.d/saslauthd lrwxrwxrwx 1 root root 16 2月 24 18:19 K10psacct -> ../init.d/psacct lrwxrwxrwx 1 root root 17 2月 24 18:26 K12FreeWnn -> ../init.d/FreeWnn lrwxrwxrwx 1 root root 15 2月 28 13:03 K12canna -> ../init.d/canna lrwxrwxrwx 1 root root 13 2月 24 18:20 K20nfs -> ../init.d/nfs 〜中略〜 lrwxrwxrwx 1 root root 14 2月 24 18:25 S87iiim -> ../init.d/iiim lrwxrwxrwx 1 root root 15 2月 24 18:20 S90crond -> ../init.d/crond lrwxrwxrwx 1 root root 13 2月 24 18:20 S90xfs -> ../init.d/xfs lrwxrwxrwx 1 root root 17 2月 24 18:19 S95anacron -> ../init.d/anacron lrwxrwxrwx 1 root root 13 2月 24 18:19 S95atd -> ../init.d/atd lrwxrwxrwx 1 root root 20 2月 24 18:16 S97messagebus -> ../init.d/messagebus lrwxrwxrwx 1 root root 15 2月 24 18:20 S97rhnsd -> ../init.d/rhnsd lrwxrwxrwx 1 root root 19 2月 24 18:17 S98haldaemon -> ../init.d/haldaemon lrwxrwxrwx 1 root root 11 2月 24 18:17 S99local -> ../rc.local |
# ls /etc/rc.d/rc3.d/ K01yum K90bluetooth S14nfslock S56xinetd K02NetworkManager K94diskdump S15mdmonitor S60vsftpd K05saslauthd K99microcode_ctl S18rpcgssd S85gpm K10psacct K99readahead S19rpcidmapd S87iiim K12FreeWnn K99readahead_early S19rpcsvcgssd S90crond K12canna S05kudzu S25netfs S90xfs K20nfs S06cpuspeed S26apmd S95anacron K24irda S08iptables S28autofs S95atd K30sendmail S09isdn S33nifd S97messagebus K50netdump S09pcmcia S34mDNSResponder S97rhnsd K73ypbind S10network S40smartd S98haldaemon K74nscd S12syslog S44acpid S99local K85mdmpd S13irqbalance S55cups K89netplugd S13portmap S55sshd |
ランレベルの制御コマンド
デーモンのスクリプトファイルの名前を変更することによって、各ランレベルのデーモンの起動を制御することができます。だた、直接名前を変更するのはめんどくさいので、Fedora Core(RPM系)には専用の制御コマンド「chkconfig」が用意されています。
「chkconfig」コマンドを利用すれば、デーモンの起動スクリプトをランレベルごとに一括して管理することができます。
デーモンのランレベルごとの制御表示
書式は、「chkconfig --list <デーモン名>」となります。最後のデーモンを省略した場合は、すべてのデーモンのランレベル制御が表示されます。また、xinetd(スーパーサーバ)経由のものについても管理することが可能です。 全てのデーモンのランレベル表示
# chkconfig --list
cpuspeed 0:off 1:on 2:on 3:on 4:on 5:on 6:off
pcmcia 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
autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
rpcgssd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
mdmpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
〜省略〜
diskdump 0:off 1:off 2:off 3:off 4:off 5:off 6:off
irda 0:off 1:off 2:off 3:off 4:off 5:off 6:off
netdump 0:off 1:off 2:off 3:off 4:off 5:off 6:off
xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
readahead 0:off 1:off 2:off 3:off 4:off 5:on 6:off
xinetd ベースのサービス:
kshell: off
echo: off
gssftp: off
rsync: off
daytime: off
time-udp: off
krb5-telnet: off
chargen: off
chargen-udp: off
echo-udp: off
daytime-udp: off
time: off
cups-lpd: off
klogin: off
eklogin: off
|
デーモンのランレベルごとの制御
書式は、「chkconfig --level <レベル> <デーモン> [動作]」となります。"レベル"は、ランレベルの数値を入れていきます。一つだけではなく、345など複数指定することも可能です。"動作"は、二つ「on」「off」のなります。
また、「--level <レベル>」を省略することもできます。「chkconfig <デーモン> [動作]」をいう形です。
この場合は、ランレベルの指定は自動的に、2,3,4,5が指定されたことになります。
rc3.dディレクトリ(ファイル名の確認)
# ls /etc/rc.d/rc3.d/ K01yum K90bluetooth S14nfslock S56xinetd K02NetworkManager K94diskdump S15mdmonitor S60vsftpd K05saslauthd K99microcode_ctl S18rpcgssd S85gpm K10psacct K99readahead S19rpcidmapd S87iiim K12FreeWnn K99readahead_early S19rpcsvcgssd S90crond K12canna S05kudzu S25netfs S90xfs K20nfs S06cpuspeed S26apmd S95anacron K24irda S08iptables S28autofs S95atd K30sendmail S09isdn S33nifd S97messagebus K50netdump S09pcmcia S34mDNSResponder S97rhnsd K73ypbind S10network S40smartd S98haldaemon K74nscd S12syslog S44acpid S99local K85mdmpd S13irqbalance S55cups K89netplugd S13portmap S55sshd |
chkconfigコマンド
1: # chkconfig --level 35 httpd on 2: # chkconfig --level 5 sshd off 3: # chkconfig sendmail off |
- デーモンhttpdがランレベル3と5の時、自動起動するように設定
- デーモンsshdがランレベル5の時、自動起動しないように設定
- デーモンsendmailはランレベル2,3,4,5の時、自動起動しないように設定
Top