我が社を有名にするブログ

株式会社エイ・ティ情報研のブログです。石川県で、システムの開発・保守、Oracle Databaseのテクニカルサポートを行っています。




Flower

Posts Tagged ‘insserv’

LPICレベル2を取得・・・できたらいいなぁ・・・。(第14回 システム起動プロセス4)


本日

(といってもアップされるのはしばらくあとですが)

我が社を有名にする委員会スカウトしていただけちゃったお荷物社員Mです!!

入社から4年、たぶん委員会初スカウト…(´▽`*)
しかもATの委員会の中で一番おもしろそうな我が社を有名にする委員会!!
ワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ


はい、でわ、今回はupdate-rc.dコマンドからなので、Linux Mint使います。

前回すこし触れたように、update-rc.dコマンドは、Debian系のコマンドになります。
ただし、Debian/GNU Linux 6.0からは、insservコマンドを使います。
現在用意しているLinux Mintではまだupdate-rc.dコマンドが使えるようなので、
update-rc.dは実機で確認してみたいと思います。

update-rc.dコマンドの書式は、

書式:update-rc.d [オプション] サービス名 [remove]
書式:update-rc.d [オプション] サービス名 [default] [NN | sNN | kNN]
書式:update-rc.d [オプション] サービス名 start | stop NN ランレベル

主なオプションと引数は以下のとおりです。

オプション・引数 説明
-n 表示するだけで何もしない
-f /etc/init.d/以下にスクリプトがあっても
強制的にシンボリックリンクを削除
remove 起動スクリプトのシンボリックリンクを削除
defaults デフォルトのシンボリックリンクを作成
ランレベル2345:起動用
ランレベル016:停止用
start 起動用のシンボリックリンクを作成
stop 停止用のシンボリックリンクを作成
NN 0~99までの数値

動作確認用に、CentOSのときと同様、httpdパッケージをインストールします。
# sudo aptitude install apache2

aptitudeコマンドを使ったのには意味はありません。なんとなくです。
当然、apt-getでも問題ありません。

インストール直後の状態は、
$ ls /etc/rc*.d/*apache2

>/etc/rc0.d/K09apache2  /etc/rc3.d/S91apache2  /etc/rc6.d/K09apache2
>/etc/rc1.d/K09apache2  /etc/rc4.d/S91apache2
>/etc/rc2.d/S91apache2  /etc/rc5.d/S91apache2
  ↑このようになっていると思います。デフォルトの状態ですね。

起動スクリプトのシンボリックリンクを全て削除するには、
$ sudo update-rc.d -f apache2 remove

> Removing any system startup links for /etc/init.d/apache2 ...
>   /etc/rc0.d/K09apache2
>   /etc/rc1.d/K09apache2
>   /etc/rc2.d/S91apache2
>   /etc/rc3.d/S91apache2
>   /etc/rc4.d/S91apache2
>   /etc/rc5.d/S91apache2
>   /etc/rc6.d/K09apache2

$ ls /etc/rc*.d/*apache2

>ls: /etc/rc*.d/*apache2 にアクセスできません: そのようなファイルやディレクトリはありません
  ↑この場合、停止用のシンボリックリンクも削除されるんですね。

次は、デフォルトの状態に戻してみます。
$ sudo update-rc.d apache2 defaults

>adding system startup for /etc/init.d/apache2 ...
>   /etc/rc0.d/K20apache2 -> ../init.d/apache2
>   /etc/rc1.d/K20apache2 -> ../init.d/apache2
>   /etc/rc6.d/K20apache2 -> ../init.d/apache2
>   /etc/rc2.d/S20apache2 -> ../init.d/apache2
>   /etc/rc3.d/S20apache2 -> ../init.d/apache2
>   /etc/rc4.d/S20apache2 -> ../init.d/apache2
>   /etc/rc5.d/S20apache2 -> ../init.d/apache2

$ ls /etc/rc*.d/*apache2

> /etc/rc0.d/K20apache2  /etc/rc3.d/S20apache2  /etc/rc6.d/K20apache2
> /etc/rc1.d/K20apache2  /etc/rc4.d/S20apache2
> /etc/rc2.d/S20apache2  /etc/rc5.d/S20apache2
  ↑インストール直後と同じ状態に戻りました。
   ・・・と思ったんですけど、優先度を指定しないと20になるようですね。

-fオプションなしでremoveするとどうなるんですかね?ためしてみましょ。
$ sudo update-rc.d apache2 remove

> update-rc.d: /etc/init.d/apache2 exists during rc.d purge (use -f to force)
  ↑rc.dの下にものがあるよって怒られますね。
   シンボリックリンクがあるうちは-fオプションが必須みたいですね。

起動スクリプトのシンボリックリンクのみを作成することもできるようです。
まず、シンボリックリンクを削除してからやってみます。
$ sudo update-rc.d -f apache2 remove
次の例では、ランレベル2,3,5でapache2が起動するようにシンボリックリンクを作成します。
ランレベルをすべて指定しない場合、末尾に「.(ピリオド)」が必要になるようです。

(ランレベルすべては、[0-9S]となるようです。0~6だけではすべてにならないみたいですね)

優先順位には、デフォルトで使われていた91を指定しました。
$ sudo update-rc.d apache2 start 91 2 3 5 .

> update-rc.d: warning: apache2 start runlevel arguments (2 3 5)
> do not match LSB Default-Start values (2 3 4 5)
> update-rc.d: warning: apache2 stop runlevel arguments (none)
> do not match LSB Default-Stop values (0 1 6)
>  Adding system startup for /etc/init.d/apache2 ...
>    /etc/rc2.d/S91apache2 -> ../init.d/apache2
>    /etc/rc3.d/S91apache2 -> ../init.d/apache2
>    /etc/rc5.d/S91apache2 -> ../init.d/apache2
  ↑デフォルトと異なる指定をした場合、警告が出るようですね。

停止用のスクリプトも作成することができます。
優先順位には、デフォルトで使われていた09を指定しました。
$ sudo update-rc.d apache2 stop 09 0 1 2 3 4 5 6 .

> update-rc.d: warning: apache2 start runlevel arguments
>  (none) do not match LSB Default-Start values (2 3 4 5)
> update-rc.d: warning: apache2 stop runlevel arguments
>  (0 1 2 3 4 5 6) do not match LSB Default-Stop values (0 1 6)
>  Adding system startup for /etc/init.d/apache2 ...
>    /etc/rc0.d/K09apache2 -> ../init.d/apache2
>    /etc/rc1.d/K09apache2 -> ../init.d/apache2
>    /etc/rc2.d/K09apache2 -> ../init.d/apache2
>    /etc/rc3.d/K09apache2 -> ../init.d/apache2
>    /etc/rc4.d/K09apache2 -> ../init.d/apache2
>    /etc/rc5.d/K09apache2 -> ../init.d/apache2
>    /etc/rc6.d/K09apache2 -> ../init.d/apache2
  ↑同じく警告がでました。起動用のシンボリックリンクがない状態でも
     パッケージのアップデートをすると起動するようになることがあるみたいです。

次に、insservコマンドですが、残念ながら現状動作環境がないので
簡単に流します。

書式:insserv [-r] サービス名

insservコマンドを利用するには、起動スクリプトに適切な設定が必要になります。
今回インストールしたapache2の起動スクリプトを例に見てみます。

$ head -10 /etc/init.d/apache2

> #!/bin/sh
> ### BEGIN INIT INFO
> # Provides:          apache2
> # Required-Start:    $local_fs $remote_fs $network $syslog $named
> # Required-Stop:     $local_fs $remote_fs $network $syslog $named
> # Default-Start:     2 3 4 5
> # Default-Stop:      0 1 6
> # X-Interactive:     true
> # Short-Description: Start/stop apache2 web server
> ### END INIT INFO

上記部分が、insservコマンドで参照される部分になります。
設定項目は以下のとおりです。

設定項目 説明
Provides サービス名
Required-Start 起動に必要なサービス
Required-Stop 停止に必要なサービス
Default-Start デフォルトで起動するランレベル
Default-Stop デフォルトで停止するランレベル
Short-Description 簡単な説明
Description 詳細な説明

apache2のサービスが自動的に起動するには、以下のようにします。
# insserv apache2

apache2のサービスが自動的に起動しないようにするには、以下のようにします。
# insserv -r apache2

※Debian GNU/Linux やUbuntuでは、sysv-rc-confコマンドというのも
  導入することができるようです。せっかくなのでみてみましょうか。。

 # sudo apt-get install sysv-rc-conf

 # sysv-rc-conf

ntsysvと似た画面がでてきました。

ntsysvと似てますね。。参考程度に。。


今回は眠気に負けたのでここまでー!!

次回はUpstartについてやります!ノシ