デーモン(サービス)の起動と停止、初期化処理とランレベル


デーモンというのはwindowsでいうサービスのことで、いつも 起動してて裏で仕事をしてるプログラムです。

1.GUIによる管理

デスク トップー>システム管理ー>サービスの管理をひく。
root権限が必要です。
Debian Linux dameon 1
起動中のサービスの一覧がでる。
Debian Linux dameon 2
プリンターがつながってないので印刷サービスのチェックを はずしておくと良いでしょう。


2.ターミナルによる方法

ターミナルか らは、デーモンの起動停止をもっと詳しく設定できます。

デーモンの起動停止は起動スクリプトで実施されます。起 動スクリプトの管理は起動処理(init)によって処理されてます。
Linux等SysV系UNIXには、稼動状態を指定するランレ ベルというものがあります(BSD系UNIXはない)。
Linuxには0から6の7つのランレベルがあります。

2-1 起動スクリプトの場所

/etc/inittabをみると以下のような記述があります。
(途中省略)
# The default runlevel.
id:2:initdefault:
(途中省略)
# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
(途中省略)

た とえば
ランレベル1だと/etc/init.d/rcというスクリプトが引数 1 で起動されることがわかります。
rc が引数 1で起動されると /etc/rc1.dの中の初期化スクリプトが順番に起動されます。

ランレベルの割 り当ては Debianだと以下のようになっています。
init0 = 停止
init1 = シングルユーザーモード
init2 = マルチユーザーモード
init3 = init2に同じ
init4 = init2に同じ
init5 = init2に同じ
init6 = 再起動

一 方、/etc/inittab の記述からデフォルトのランレベルが2のマルチユーザーモードであることがわかります。

通常使用してるのはマル チユーザーモードなので/etc/rc2.dの内容をのぞいてみましょう。
#ls /etc/rc2.d
K80cupsys    S20acpid         S20inetd       S89cron       S99stop-bootlogd
K80lpd       S20canna         S20makedev     S99gdm        S99xdm
README       S20dbus          S20ssh         S99kdm
S10sysklogd  S20exim4         S21nfs-common  S99local
S11klogd     S20hotkey-setup  S89atd         S99rmnologin

Kxx, Sxxという記号のついた初期化スクリプトがならんでいます。
K ではじまるものはスクリプトの引数にstopをつけてスクリプトが実行されます。その結果デーモンが停止します。
Sではじまるものは スクリプトの引数にstartをつけてスクリプトが実行されます。その結果デーモンが起動します。
xxの数字は呼び出す順番を決める ためのもので若い番号から起動されます。

たとえ ばcannaの起動スクリプトはrc1でもrc2でも同じものが使えるはずです。
そこで /etc/init.d に本当の起動スクリプトをおいておき /etc/rc2.dには本当の起動スクリプトのシンボリックリンクが置いてあります。
シンボ リックリンクというのはwindowsでいうショートカットのことです。

/etc/rc2.d/S20canna の本当の起動スクリプトの場所を表示させてみましょう。
#ls -l  /etc/rc2.d/S20canna
lrwxrwxrwx 1 root root 15 2006-08-08 20:15 /etc/rc2.d/S20canna -> ../init.d/canna
/etc/init.d/cannaが実体だということがわかります。

2-2 デーモンの起動と停止

デーモンの一時的な起動と停止には、/etc/init.d 内部の起動スクリプトを使います。
例 えば sshd を一時的に停止させるには
#/etc/init.d/ssh stop
一時的に起動させるには
#/etc/init.d/ssh start
とやります。

現在のランレベルを知るには、/sbin/runlevel を使います
$/sbin/runlevel
N 2
(Nは一つ前のランレベルが存在しないことを表しています)

ランレベルの変更には  telinit "ランレベル"を使います。
バックアップ作業などの為、シングルユーザーモード(ランレベル1)に移行するには
#telinit 1
とやります。

2-3 rc*.dディレクトリの管理

シンボリックリ ンクを作成・削除するのに便利なコマンドにupdate-rc.dがあります。
(1)シンボリックリンクの作成
inetd 関係のシンボリックリンクを全て削除するに は以下のコマンドを打ちます。
#update-rc.d -f inetd remove
シンボリックリンクが 全くないとinitdをアップデートしたときに再度作成されてしまうので適当にシンボリックリンクをつくります。
#update-rc.d inetd stop 20 5 .
元に戻すには
#update-rc.d -f inetd remove
#dpkg-reconfigure netkit-inetd
ですね。
(2)シンボリックリンクの削除
参考HPによると PostgreSQLの起動スクリプトのリンクを張るには
update-rc.d postgres start 90 2 3 4 5 . stop 10 0 1 6 .
とかやるといいそうです。
#man update-rc.d
で使い方 を調べてみるといいでしょう

2-4 localによるずさんな管理(Linux的には好ましくない)

/etc/init.d/local という実行可能スクリプトを作って適当にコマンドを書いて、シンボリックリンクを作ると便利です。
#vi /etc/init.d/local
(localの内容)
#!/bin/sh
mount -a
(ここまで)
#chmod +x /etc/init.d/local
#update-rc.d local defaults 99


<参 考HP>
Linux な生活 起動処理(init)とランレベル(rc.d)の制御
Linux 起動の仕組みを理解しよう[init/inittab編]



このHPの内容に問題等ありましたら sけい し(skeishi@yahoo.co.jp)まで連絡願います。
戻る
sけいし発HPに戻る

inserted by FC2 system