よく使うLinuxコマンド

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しているサービス(ポート)を調べましょう。