• Top
  • What's New
  • Command
  • Basic
  • Server
  • Security
  • Conf
  • tools
  • etc
  • blog
  • Link
  • サイトについて
  • Mail
INDEX /  シェル(bash) /  FHS /  パーミッション /  ランレベル /  RPM /  vi /  シンボリックリンク / 
最終更新日 2005/06/01  

ランレベル


ランレベルとは
ランレベルの種類
ランレベルの表示と変更
デフォルトのランレベル
ランレベルとデーモン
ランレベルの制御コマンド

ランレベルとは

GNU/Linuxシステムは、システムの動作モードが複数存在します。このモードのことを"ランレベル"と呼びます。
ランレベルは、ランレベル0からランレベル6までの全部で7つランレベルが存在します。
しかし、ランレベルの定義は、UNIXやGNU/Linuxディストリビューションによって若干(又は大きな)違いがあります。
例えば、Fedora Core(RPM系)の場合、ランレベル3はマルチユーザモード(テキストログイン)で、ランレベル5はマルチユーザモード(グラフィカルログイン)になります。
デフォルトのランレベルは、3か5である。テキストかグラフィカルかによってランレベルが違ってきます。
一方、Debian GNU/Linux(Debian系)では、デフォルトのランレベルは2になり、テキストログインでもグラフィカルログインでも変わりはありません。
ページトップへTop

ランレベルの種類

ここでは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再起動の状態

ページトップへTop

ランレベルの表示と変更

現在のランレベルを表示するには、「runlevel」というコマンドを使用します。
runlevelコマンドでは、現在のランレベルと一つ前のランレベルが表示されます。デフォルトのランレベルから移行がない場合は"N"と表示されます。
また、ランレベルの変更には、「init」又は「telinit」というコマンドを使用します。
「init」又は「telinit」の後にスペースを入れてランレベルの数字を入力すると、そのランレベルへと移行することができます。
当然、X Windows Systemが入っていなければランレベル5への移行はできません。

 

ランレベルの表示(runlevelコマンド)
1: # runlevel
2: N 3

  1. runlevelコマンドで現在と一つ前のランレベルを表示
  2. "N"と3が表示されているのでデフォルトのランレベル3からの移行はない
ランレベルの変更(telinit,initコマンド)
1: # telinit 5
2: # init 3

  1. ランレベル5へ移行
  2. ランレベル3へ移行
ページトップへTop

デフォルトのランレベル

デフォルトのランレベルは、変更することができます。
デフォルトのランレベルの変更は「/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

            〜省略〜

次回、起動したときから設定したデフォルトのランレベルが適用されます。
ページトップへTop

ランレベルとデーモン

デーモン制御スクリプト

ランレベルによって、起動するデーモンを制御することができます。
例えば、ランレベル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

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

ページトップへTop

ランレベルの制御コマンド

デーモンのスクリプトファイルの名前を変更することによって、各ランレベルのデーモンの起動を制御することができます。
だた、直接名前を変更するのはめんどくさいので、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

  1. デーモンhttpdがランレベル3と5の時、自動起動するように設定
  2. デーモンsshdがランレベル5の時、自動起動しないように設定
  3. デーモンsendmailはランレベル2,3,4,5の時、自動起動しないように設定
ページトップへTop

 
Copyright (c) 2005 Mukuan All Rights Reserved.