kazmax - Linux で自宅サーバー

(CentOS6まで)Linux ランレベル(runlevel)

ランレベル(runlevel)とは、Linuxの動作モードのことをいいます。いくつかの種類があり、ランレベル毎に起動させるサービスを設定できます。ランレベル(runlevel)について説明します。

また、ランレベルはCentOS 6までの話です(もう少し正確にいうと、SysV init もしくは Upstart が導入されているシステムまでの話)。CentOS 7からはランレベルの概念が変わっています。

Last Update : 2015年06月26日

(CentOS6まで)Linux ランレベル(runlevel) 項目

  1. ランレベル(runlevel)の種類
  2. 現在のランレベルの確認
  3. 別のランレベルへ移行する
  4. デフォルトのランレベルを設定する

1. ランレベルの種類

全部で8つのランレベル(runlevel)を使うことができます。0~6までの、数値で表す7種類と、「S」(大文字小文字区別無し)という文字で表すものがあり、現在のランレベルの値によって起動/停止されるサービスが変わります。ディストリビューションによって少し内容が変わるところもありますが、ランレベルの0、1、6 は予約されていてどのディストリビューションでも同じ動作を示します。

どのランレベルでどんなサービスを起動させるかは自分で決めることができます。

ランレベル 動作モード
0 システム停止
1 シングルユーザーモード
2 マルチユーザーモード(CUI,NFS無し)
3 マルチユーザーモード(CUI)
4 使わない
5 マルチユーザーモード(GUI)
6 再起動
S(もしくは小文字のs) シングルユーザーモード

memo

CUI = character user interface の略で、全ての操作をキーボードで行う方式。全てコマンドで操作する。

GUI = graphical user interface の略で、Windowsの画面のように画像や図形があり、マウス等を使って直感的にOSを操作できる方式。

2. 現在のランレベルの確認

現在どのランレベルで動作しているかは、runlevelコマンドで確認できます。

runlevel コマンドの書式

runlevel

runlevel コマンドの出力結果の見方

# runlevel
N 3

runlevelコマンドは、前のランレベル、空白、現在のランレベルという順番で出力されます。前回の状態の記録がない場合(OS起動直後等)は、「N」という文字で表示されます。

この場合は、現在のランレベルは3で、その前のランレベルの記録はない(つまり、起動後に変更がない)ということをあらわします。

memo

ランレベルの状況については、who コマンドでも確認できます。

# who -a  ← who コマンドに、「-a」もしくは、「-r」オプションでrunlevelを確認できます。
           system boot  2015-06-26 08:41
           run-level 3  2015-06-26 08:41  ← 現在のrunlevelを確認。
LOGIN      tty2         2015-06-26 08:41              2113 ID=2
LOGIN      tty3         2015-06-26 08:41              2115 ID=3
LOGIN      tty1         2015-06-26 08:41              2111 ID=1
LOGIN      tty5         2015-06-26 08:41              2119 ID=5
LOGIN      tty6         2015-06-26 08:41              2121 ID=6
LOGIN      tty4         2015-06-26 08:41              2117 ID=4
root     + pts/0        2015-06-26 08:42   .          2135 (192.168.0.9)

last コマンドを使うと、ランレベルの移行状況を確認できます。

# last -x -10   ← 「-x」オプションでrunlevelの移行状況を表示。「-10」は10行分の意味。
root     pts/0        192.168.0.9      Fri Jun 26 08:42   still logged in
runlevel (to lvl 3)   2.6.32-431.29.2. Fri Jun 26 08:41 - 08:49  (00:08)  ← runlevelが3に移ったという意味。
reboot   system boot  2.6.32-431.29.2. Fri Jun 26 08:41 - 08:49  (00:08)
shutdown system down  2.6.32-431.29.2. Fri Jun 26 08:40 - 08:41  (00:00)
runlevel (to lvl 6)   2.6.32-431.29.2. Fri Jun 26 08:40 - 08:40  (00:00)  ← runlevelが6(再起動)に移ったという意味。
runlevel (to lvl 3)   2.6.32-431.29.2. Fri Jun 26 08:28 - 08:40  (00:12)
runlevel (to lvl 2)   2.6.32-431.29.2. Fri Jun 26 08:24 - 08:28  (00:03)
root     pts/0        192.168.0.9      Fri Jun 26 08:18 - down   (00:21)
root     pts/0        192.168.0.9      Fri Jun 26 08:09 - 08:09  (00:00)
runlevel (to lvl 3)   2.6.32-431.29.2. Wed Jun 24 14:32 - 08:24 (1+17:52)

wtmp begins Tue Aug 13 09:34:02 2013

3. 別のランレベルへ移行する

別のランレベルへ状態を移行するには、「telinit」コマンドを使います。

telinit 書式

telinit RUNLEVEL

RUNLEVELは、移行先のランレベルを指定する。(0~6、S、s)

telinit 使用例

# telinit 5 ランレベル5へ状態を移行

4. デフォルトのランレベルを設定する

OSが起動した直後の、デフォルトのランレベルは、/etc/inittab ファイルで設定します。

/etc/inittab ファイルをvi 等で開き、以下の行の数字の部分を変更します。ファイルの修正は、root ユーザーでおこないます。

id:3:initdefault:

この場合だと、ランレベル3で起動してきます。

ランレベル5で起動するようにするには、以下のようにします。

id:5:initdefault:

ファイル修正後に、OSを再起動すると変更内容が反映されます。

サービスの管理 関連記事
Linux 基礎知識 関連記事