Debian のサービス自動起動を切る方法

| コメント(0) | トラックバック(0)

Debian と Fedora だとランレベルの設定が違っていてどっちだったか思い出せない。個人的にはこの二つを覚えていればいいかなぁと思うのだけど、そのうち FreeBSD でも調べようと思う。

coLinux 使っていて何か apt-get でインストールした後、いつも忘れて Google 検索してしまうので自分の blog に書いておく。

自動起動の停止

Debian の場合 /sbin/update-rc.d ってコマンドがあってこれを使う。自動起動を停止させる場合は以下で OK。たぶんオプションで -f (force) を指定しないとエラーがでると思う。

% /sbin/update-rc.d -f サービス名 remove
 Removing any system startup links for /etc/init.d/サービス名 ...
   /etc/rc0.d/K20サービス名
   /etc/rc1.d/K20サービス名
   /etc/rc2.d/S20サービス名
   /etc/rc3.d/S20サービス名
   /etc/rc4.d/S20サービス名
   /etc/rc5.d/S20サービス名
   /etc/rc6.d/K20サービス名

これは全部のランレベルでの自動起動を停止させる。厳密には起動用ランレベルごとのディレクトリにある、設定スクリプトを削除している。しかし、apt-get upgrade とかでサービスそのものが update してしまった時には、また自動起動用のスクリプトが出来てしまうので停止用のスクリプトを作っておいた方が良いのかもしれない。

% /sbin/update-rc.d サービス名 stop 30 0 1 2 3 4 5 6 .

また自動起動させる (起動用スクリプトを作成する) には

% /usr/sbin/update-rc.d サービス名 defaults 20
 Adding system startup for /etc/init.d/サービス名 ...
   /etc/rc0.d/K20サービス名 -> ../init.d/サービス名
   /etc/rc1.d/K20サービス名 -> ../init.d/サービス名
   /etc/rc6.d/K20サービス名 -> ../init.d/サービス名
   /etc/rc2.d/S20サービス名 -> ../init.d/サービス名
   /etc/rc3.d/S20サービス名 -> ../init.d/サービス名
   /etc/rc4.d/S20サービス名 -> ../init.d/サービス名
   /etc/rc5.d/S20サービス名 -> ../init.d/サービス名

defaults の後にある数字は 0 ~ 99 まで使えて、これがサービスの優先順位になる。これだとランレベルは自動で設定されてしまうので、それでは困るって人は下記の項目を

ランレベルを指定して設定

細かくランレベルを指定するには

% /usr/sbin/update-rc.d サービス名 stop 20 0 1 2 3 4 5 6 .
 Adding system startup for /etc/init.d/サービス名 ...
   /etc/rc0.d/S20サービス名 -> ../init.d/サービス名
   /etc/rc1.d/S20サービス名 -> ../init.d/サービス名
   /etc/rc2.d/S20サービス名 -> ../init.d/サービス名
   /etc/rc3.d/S20サービス名 -> ../init.d/サービス名
   /etc/rc4.d/S20サービス名 -> ../init.d/サービス名
   /etc/rc5.d/S20サービス名 -> ../init.d/サービス名
   /etc/rc6.d/S20サービス名 -> ../init.d/サービス名

以下のようにすると起動するレベルと停止してるレベルで優先順位を変えて設定しておける。

% /usr/sbin/update-rc.d サービス名 start 30 0 1 6 . stop 20 2 3 4 5 .

雑記

個人的には開発環境では使わないサービスは停止しておきたいので remove ぐらいしか使わないと思うけど、update で上書きされた時困るので覚えておきたい。