MindSearchデーモンの起動と停止
プロセスの説明
MindSearchのデーモンとその派生プロセスとの関係について説明します。
下記のプログラムがMindSearchのルートプロセスになります。
上記 msdaemon は小さな起動用プログラムに過ぎず、プログラムの実体は msdaemon.mco になります(MindSearchがMindという言語で記述されているためこのようになります)
msdaemon は起動すると、パートナーとなる二つのデーモンをさらに起動します。
- lockdaemon.mco
- loader.mco
lockdaemon はプロセス間の調停をおこなうものですが、msdaemon が内部的に使うものなのでアプリケーション開発者がこの起動・停止について明にかかわることはありません。lockdaemon は常に msdaemon と一緒に起動し、一緒に停止するものと理解してください。
loader はシンボルテーブルの一部を共有メモリにロードし保持する役割を持ちます。起動・停止については lockdaemon と同様です。
ここからMindSearchデーモンは通常の運転に入ります。MindSearchデーモンの役割は、所定のポートをリスンし、クライアントアプリケーションから新しい接続要求が入ったら、派生プロセス msservice.mco を起動することです。
以後は msservice がクライアントアプリケーションの相手を務めます。
インデックス作成作業に入ると、msservice プロセスはそれを専門に行なう別のプロセスに切り替わります。
- msserviceidx.mco ←インデックス作成処理
MindSearchの稼動状態では最低でも3つのデーモン・プロセスがメモリに常駐しています。また検索、インデックス作成の実行時にはより多くの派生プロセスが発生します。
psコマンドでプロセス走行状態を調べた場合、プロセス名としてMind言語のランタイムである mrunt060 としてしか見えません。もしpsコマンドがプロセスのコマンドラインを表示できれば、それを表示させるとより詳しく見ることができます。psコマンドで言うところのプロセス名ではなく、そのコマンドラインの第1引数が実質的なアプリケーション名となります。
(例) ↓実質的なアプリケーション名
1234 /home/foo/msfuzzy/bin/mrunt058 msdaemon.mco
1235 /home/foo/msfuzzy/bin/mrunt058 lockdaemon.mco
1236 /home/foo/msfuzzy/bin/mrunt058 loader.mco
↑OSレベルでのプロセス名は常にmruntxxxなので、
何のプロセスが上がっているのかこれだけでは不明
デーモンの起動(手動によるもの)
デーモンの起動は、開発期間であればキーボードから手動によっておこなう方法で構いません。
実際に起動してみます。インストール者のアカウントでログインし、以下のように起動します。
$ cd ~/msfuzzy/bin
$ ./msdaemon & ←デタッチで起動
上記ではコマンドライン末尾に & を付けているため、MindSearchはバックグラウンド走行となり再びコンソールに制御が戻ります。もし & を付け忘れてしまった場合には制御が戻って来ないため、もう一つのコンソールを開き、そちらから停止するなり、アプリケーションを起動するなりしてください。
MindSearchデーモンが起動するとコンソールに次のような簡単なメッセージが表示されます。
MSdaemon: start
Lockdaemon: start
Lockdaemon: Host:localhost Port1:3580 Port2:3581 Port3:3582
Loader: start
Loader: 共有メモリ管理テーブル獲得
Loader: get 6KB: key=08001001 id=1245184 addr=40013000 Total= 1MB
MSdaemon: waiting connection
上記起動例ではポート番号を指定していないため、デフォルトの3580番が使われます。他のポート番号を使うのであれば次のようにポートを明示してください。
$ ./msdaemon -p26010 & ←ポート番号を明示した起動
msdaemonの起動オプションは以下のとおりです("--help"をオプションとして起動するとこのようなヘルプを表示できます)。
-----------------------------------------------------------------
Usage: msdaemon [-hHOST] [-pPORT] [-mN] [-cN] [-sN] [--help]
-hHOST ホスト名(デフォルト=localhost)
-pPORT ポート番号(デフォルト=3580)
-mN モニタ指定(デフォルト=0、N省略は1)
-cN 通信モニタ指定(デフォルト=0、N省略は1)
-sN 最大セッション数指定(デフォルト=2000)
--help 起動方法を表示(今表示しているもの)
-----------------------------------------------------------------
「-pPORT」によるポート番号指定を行う場合、3580, 3584, 3588 .. のように4つ置きの数字を指定してください。デフォルトポート以外を指定した場合、共有メモリのキーベース値も連動して変化します。
「-sN」(最大セッション数指定)では標準の最大セッション数 2,000 を越える数を指定するのに本オプションを使います。セッションについての詳細は セッション管理 を参照してください。
デーモンの起動(自動起動)
アプリケーションが実稼動に入った場合には、/etc 以下にあるUNIXの初期化スクリプトにMindSearchの起動を追加することで自動的に起動してください。
msdaemonの実効ユーザはrootにはしないことをお薦めします。MindSearchのデーモンはアプリケーションからの要求によって、(与えるスクリプトによっては)システムの任意のディレクトリのファイルを読み取ったりファイルを生成することができるため、rootで起動するのはセキュリティ上の問題があります。したがって一般ユーザを実効ユーザとすることを薦めます。一般的にはインストール作業者のアカウントで起動するのが良いでしょう。
たとえば、/etc/rc.d/rc.local の末尾に次のような記述を追加することで自動起動できます。
-----------------------------------------------------------------
〜略〜
su foo -c '/home/foo/msfuzzy/bin/msdaemon &'
-----------------------------------------------------------------
上記で foo の部分はmsdaemonインストール者を仮定しています。これにより、MindSearchデーモンは ユーザ=foo の実行権限で作動することになります。
(suコマンドを使うのは、rootで起動せず一般ユーザ権限で起動するため)
デーモンの停止は、msctrl というツールを使います。以下が起動例です。
起動時にホスト名、ポート番号を明記した場合はは停止時に同じオプションを指定してください
$ cd ~/msfuzzy/bin
$ ./msctrl stop ←デフォルトのホスト名、ポートであればこれで良い
msstopが起動すると次のようなメッセージがコンソールに表示されます(msstopのメッセージとMindSearchデーモンの終了時メッセージが混在することがあります)。
msctrl: request stop msdaemon
msctrl: CANメッセージを送信した
MSdaemon: detect CAN
MSdaemon: finish ←これはMindSearchデーモンの表示
Loader: finish ←同上
Lockdaemon: finish ←同上
MindSearchとアプリケーションとの間で交信が続いているような場合には、交信が落ち着くまでしばらく待たされます。(まったく静かな場合であっても、停止までには3秒から4秒ほどかかります)
msctrl は他の機能も持っています。起動形式は引数無しで起動するとUsageを表示するので確認できますが、詳しくは 開発関連ツールの使い方 - msctrl(デーモン制御) をお読みください。
Copyright(C) 2000-2009 Scripts Lab. Inc.