サーバー運営上必要なコマンド コマンドMenu

insserv


ランレベルに合わせて自動起動及び停止させる設定を行う。

 
■よく使う形(例)

※apacheをランレベルに合わせて自動起動させる設定を行う。
# insserv -d apache

 

ls -l /etc/rc*.d/*apache

lrwxrwxrwx 1 root root 16 Jun 20  /etc/rc0.d/K01apache -> ../init.d/apache
lrwxrwxrwx 1 root root 16 Jun 20  /etc/rc1.d/K01apache -> ../init.d/apache
lrwxrwxrwx 1 root root 16 Jun 20  /etc/rc2.d/S02apache -> ../init.d/apache
lrwxrwxrwx 1 root root 16 Jun 20  /etc/rc3.d/S02apache -> ../init.d/apache
lrwxrwxrwx 1 root root 16 Jun 20  /etc/rc4.d/S02apache -> ../init.d/apache
lrwxrwxrwx 1 root root 16 Jun 20  /etc/rc5.d/S02apache -> ../init.d/apache
lrwxrwxrwx 1 root root 16 Jun 20  /etc/rc6.d/K01apache -> ../init.d/apache


※apacheの自動起動を停止する。
# insserv -r apache

 


rc.dディレクトリに起動スクリプトのシンボリックリンクを張ってくれます。以前は、update-rc.dコマンドを使用していましたが、squeezeからはinsservコマンドの使用が推奨されてります。

ランレベルに合わせて、まとめてシンボリックリンクを張ってくれるので、とても便利。

 



■主なオプション

オプション 機能説明
-d ランレベルに合わせた自動起動をデフォルトで設定する(シンボリックリンクを作成する。)
-r シンボリックリンクを削除(自動起動を停止)する。
アプリケーションをパッケージでインストールした場合には特に必要はありませんが、ソースからコンパイルしたサーバーサービスの場合、システムの起動時に自動起動するように設定しなくてはなりません。

サーバーのサービスの起動には、/etc/init.d/下に配置した起動スプリクトを実行すればよいわけですが、それを自動化するには、ランレベルにに合った起動スプリクトをそれぞれのディレクトリにシンボリックリンクを張ればOKです。
insservというコマンドは、それを簡単に設定してくれます。


debianの場合のランレベルは下記の通りです。

init0 = 停止
init1 = シングルユーザーモード
init2 = マルチユーザーモード
init3 = init2と同じ
init4 = init2と同じ
init5 = init2と同じ
init6 = 再起動



Debianでは、起動時のデフォルトランレベルは、rc2.dになります。
rc.d内のスクリプトは、先頭が"S"で始まる物が起動、"K"で始まる物が停止で、"S"や"K"の後に続く数字順に実行されます。

例えば、rc2.d/下はこんな感じです。

lrwxrwxrwx    1 root     root           18 Mar 25  2007 S10sysklogd -> ../init.d/sysklogd
lrwxrwxrwx    1 root     root           15 Mar 25  2007 S11klogd -> ../init.d/klogd
lrwxrwxrwx    1 root     root           16 Mar 25  2007 S20apache -> ../init.d/apache
lrwxrwxrwx    1 root     root           15 Mar 25  2007 S20inetd -> ../init.d/inetd
lrwxrwxrwx    1 root     root           20 Mar 25  2007 S20postgresql -> ../init.d/postgresql
lrwxrwxrwx    1 root     root           13 Mar 24  2007 S20ssh -> ../init.d/ssh
lrwxrwxrwx    1 root     root           17 Nov 27  2007 S50proftpd -> ../init.d/proftpd
lrwxrwxrwx    1 root     root           13 Mar 25  2007 S89atd -> ../init.d/atd
lrwxrwxrwx    1 root     root           14 Mar 25  2007 S89cron -> ../init.d/cron

 



それを簡単に登録・削除できるツールがinsservコマンドです。

# insserv -d apache

# ls -l /etc/rc*.d/*apache
/etc/rc0.d/K01apache -> ../init.d/apache
/etc/rc1.d/K01apache -> ../init.d/apache
/etc/rc2.d/S02apache -> ../init.d/apache
/etc/rc3.d/S02apache -> ../init.d/apache
/etc/rc4.d/S02apache -> ../init.d/apache
/etc/rc5.d/S02apache -> ../init.d/apache
/etc/rc6.d/K01apache -> ../init.d/apache


defaultsを設定した場合は、2番でシンボリックリンクが作成されます。

# insserv -r apache (自動起動を削除)


不必要な起動スプリクトの削除します。
パッケージでインストールした場合は、自動的に設定されているので、サービスを使用しない場合は、パッケージのアンインストールか起動スプリクトの削除が必要です。



# insserv apache,start=2,3,4,5

ランレベルに合わせて細かく起動を設定します。
起動順序も変えれますが、基本はデフォルトで全く問題がありません。


もし、現在のサービスが何が動いているか不安であれば、[lsof -i]コマンド[netstat -an]コマンドで、現在LISTENしているサービス(ポート)を調べましょう。