CentOS 6でinitスクリプトを作成¶
はじめに¶
CentOS 6では、システム起動時(ブートローダーがカーネルをメモリにロードし、カーネルが起動した後)に立ち上がるinitコマンド(通常プロセスID 1)がランレベルに応じて/etc/rc0.d~rc6.dディレクトリにあるスクリプトを順次実行していきます。ランレベルが3であれば、/etc/rc3.dディレクトリ下のスクリプトが実行されます。
ランレベル¶
RHEL6/CentOS6では、次のようにランレベルが定義・使用されています。
Red Hat Enterprise Linux 6 インストールガイド 付録F
| ランレベル | 意味 |
|---|---|
| 0 | 停止 |
| 1 | シングルユーザーテキストモード |
| 2 | 未使用(ユーザー定義で使用可能) |
| 3 | フルマルチユーザーテキストモード |
| 4 | 未使用(ユーザー定義で使用可能) |
| 5 | フルマルチユーザーグラフィカルモード) |
| 6 | 再起動 |
システムがどのランレベルで起動するかは、/etc/inittab で決まります。
id:5:initdefault:
chkconfig¶
起動時に、ランレベルに応じて実行するinitスクリプトを管理するのがchkconfigコマンドです。
initスクリプトの作成¶
initスクリプトの骨格¶
#!/bin/sh <-- シェルスクリプトとしての定義
# chkconfig: 345 99 01 <-- サービスを動かすランレベル(345)、startの数字(S99)、stopの数字(K01)
# description: 説明を記述 <-- このinitスクリプトの説明を記述
# config: /path/to/config <-- このinitスクリプトが参照する設定ファイルがあれば記述
. /etc/init.d/functions <-- initスクリプトユーティリティ設定を取り込み
case "$1" in <-- initスクリプトに渡されるオプションで制御を振り分け
start)
;;
stop)
;;
status)
;;
restart)
;;
reload)
;;
*)
;;
/etc/init.d/functionsの利用¶
予め用意されているinitスクリプト用のユーティリティ集です。
success、failure、killproc、daemon、__readlink、__fgrepほかいろいろ