コマンドによるデーモンの起動及び停止 

今まで、「まず、Kメニューからデーモン設定ツールを選択し起動してください。」というかたちでサーバーの起動をしていました。それでは、シェルからの起動は、どのようにして行うのかを説明していきましょう。シェルとは、DOSのプロンプト画面と同じでコマンドによりOSに対して命令するプログラムのことで、比較的多く利用されているのが、bashやshです。ほかにcsh,ksh,zsh,tcshなどがあります。通常どのシェルを使うかの設定は、ユーザー管理で行います。

 デーモン

メモリーに常駐して、バックグラウンドで稼動し続けるプログラムのことをいいます。
スタンドアローン方式ともいいます。

 スーパーデーモン

デーモンとの違いは、ポートの監視を行い、クライアントからそのサービス要求が発生すると、その時点で該当するサーバープログラムを起動させる方法です。つまり、常にメモリーに常駐していない為、必要な時だけメモリーに常駐し、処理が終わればメモリーを解放します。ですからリソースの消費がすくなくてすむと言う方式です。
スーパーデーモン方式

 サービス制御スクリプト

デーモンの起動/停止/再起動を行うには、下図のスクリプトにより行います。場所は、/etc/rc.d/init.d と言うディレクトリーに置かれています。(下図参照)
これらすべてがスクリプトです。

 スタンドアローン方式による起動例

 (例)Apacheの起動について

起動スクリプトは、「httpd」 です。起動するには、/etc/rc.d/init.d/httpd start とシェルから入力します。(下図参照)

停止するには、/etc/rc.d/init.d/httpd stop とシェルから入力します。(下図参照)

 主にスタンドアローン方式で運用されるサービス

   httpd smb sendmail named sshd xinetd webmin 等

 スーパーデーモン方式による起動例

 スーパーデーモンの起動/停止/再起動を行うスクリプトは、/etc/rc.d/init.d/xinetd start とシェルから入力します。(下図参照)
停止するには、/etc/rc.d/init.d/xinet stop とシェルから入力します。(下図参照)

ただしこれは、スパーデーモンを有効、無効にするだけのデーモンです。実際に起動するサービスは、/etc/xinetd.dにある個々の設定ファイルに対して起動をかけたりかけなかったりします。(下図参照)

 それでは、telnetの設定ファイルを見てみましょう。

# default: off
# description: Telnet server
# securlevel: 30
service telnet
{
disable = yes
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in.telnetd
server_args = -h
}
コメント
コメント
コメント
この行は、サービス名称を指定します。

xinetd経由で起動するかしないかyesは起動しない、noは起動する。
ソケットの種類を指定。
プロトコルの指定。
複数の接続を同時に受けるかonは受ける。
サービスを立ち上げるユーザー
サーバープログラムの絶対パス
起動オプション

 設定例で分かるように、disable=noになっているサービスについては、xinetdの起動がかかった時点でサービスが開始される。ただし、そのサービスが起動しているかどうかを確かめることは出来ないので、実際にアクセスしてみるしか手がない。

 主にスーパーデーモン方式で運用されるサービス

   telnet swat wu-ftpd ipop3 imap等

 動作中のデーモンを確認する方法

Linuxでは、実行中のプログラムのことをプロセスと言います。このプロセスを確認する方法は、「ps」 というコマンドを使います。

 すべてのプロセスを表示させるには、 ps ax と入力します。(下図参照)


 簡単に説明すると、PIDがプロセスIDです。PID582を見るとCOMMANDのところがproftpdとなっていますね。それが起動しているサービス名称で582がプロセスIDになります。また、PID10249をみてください、COMMANDのところがhttpdが並んでいますね、これはapacheが起動していて、子プロセスが5つ動いていることを示しています。

 デーモンの停止方法

 killコマンドを使用する。このコマンドは、指定したプロセスのシグナルと言うメッセージを送る。プロセスIDを指定し実行すればTERMと言うシグナルが送られる。TERMとは、終了を意味するシグナルである。

 プロセスIDは、上記のps axコマンドで調べることが出来るまた、pidファイルを調べても確認できる。たとえばsshdのpidファイルは、/var/run/sshd.pid ファイルがあるのでテキストエディターで開いてみると、単純に数字が入っている、それがプロセスIDである。

 httpdを停止する場合
  親IDを停止させる。
  kill 10249と実行させると停止する。
  ps axコマンドで確認する。
  尚、プロセスIDは、起動する度代わるので再度立ち上げた場合は、もう一度プロセスIDを確認して実行すること。

 killコマンドのオプションについて(kill オプション pid)
  -9 強制終了
  -1 ハングアップさせる
  -15 (デフォルテ)
  -all すべて終了させる
  以下詳しいく知りたい場合は、技術書を参考にしてください。

 システム起動時にサービスも同時に起動する方法 
Turbolinux8をインストールした時に、セキュリティーレベルを高にしたことを憶えていますか?。ここで設定した内容が、システムの起動時に反映されるのです。要するに、低レベルの場合、色んなサービスが起動してしまい、そこから不審者が侵入してしまう可能性があり、ネットワークに接続する場合は、その設定を必要最小限にする必要がある訳です。それでは、まず現在どんなサービスが起動しているのか見てみることにしましょう。

 起動サービスの確認

 まず、Kメニューからデーモン設定ツールを選択し起動してください。上部の方に「起動時のサービス設定」と言うタグがあると思いますそれを選択してみてください。サービス名にレ点が入ってい入るのがあると思います。それがサービス起動時に同時に起動するサービスなのです。起動させたくないサービスがあればこのレ点を消し、起動させたいサービスがあればレ点を付ければ完了です。最後にセーブして終了です。サーバーをリブートして確認してみて下さい。設定したサービスがRunning又はstopになっていれば完成です。

 ランレベルについて

 ランレベルとは、Linuxの動作モードで、0から6までの番号があります。通常利用するのが3か5です。(下記参照)

ランレベル 内容
0 システムを停止するモード
3 マルチユーザーモード、ログイン画面がTEXTベース
5 マルチユーザーモード、ログイン画面がグラフィカル
6 システムの再起動を行うモード

 ランレベルの確認方法
  /etc/inittab

id:3:initdefault:

# System initialization.
si::sysinit:/etc/rc.sysinit

l0:0:wait:/etc/rc 0
l1:1:wait:/etc/rc 1
l2:2:wait:/etc/rc 2
l3:3:wait:/etc/rc 3
l4:4:wait:/etc/rc 4
l5:5:wait:/etc/rc 5
l6:6:wait:/etc/rc 6
←システム起動時のランレベル
id:3がランレベル

←システム初期化スクリプトの実行指示

←ランレベルに応じた処理が指定
つまり、ランレベル3の場合、rcは/etc/rc3.dのディレクトリー内のサービス制御スクリプトを実行する。と言う意味である。

 rc3.dスクリプト

 とりあえずrc3.dの中身を見てみましょう

[root@sv1 rc3.d]# ls
K15proftpd@ S30syslog@ S55sshd@ S90crond@
S10network@ S50xinetd@ S99local@
[root@sv1 rc3.d]#

 先頭がSで始まるスクリプトは起動時に開始するサービスで、先頭がKで始まるサービスは、起動時に停止するサービスです。
そのあとの数字は、実行していく順番で、若い番号順に開始していきます。これらのファイルは、先に紹介したサービス制御スクリプトのシンボリックリンクになっています。このファイルは、デーモン設定ツールで設定した内容がここに反映されるのです。

 この辺のロジックは少し難しいかもしれません。自分で制御スクリプトの中を見て研究してみてください。また参考までに、chkconfigのコマンドが多いに関わっていますので是非調べてみてください。コマンドで上記の設定変更や表示が出来ます。豆知識に反映

本サイト利用者数は名です。本日は名、 昨日は名の受講ありがとうございます.
TOPページへ   Lesson4  DNSサーバーを立ち上げよう Lesson6 メールサーバーを立ち上げよう
Since 2003/2/8 Copyright(C) 2003 Parterre.homelinux.net All Rights Reserved.