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ほかいろいろ