daemontools

出典: フリー百科事典『ウィキペディア(Wikipedia)』
daemontools
開発元 ダニエル・バーンスタイン
最新版
0.76 / 2001年7月12日
対応OS Unix系
種別 ユーティリティ
ライセンス パブリックドメイン
公式サイト daemontools
テンプレートを表示

daemontoolsでーもんつーるずは、ダニエル・バーンスタインによって開発された、Unix系OSにおけるサービス管理のためのツールのパッケージである。Unix系OSにおける、rc.drc.localinittab などのinitの代替としてデーモンを起動させることができる。2007年11月よりパブリックドメインとなった。

概要[編集]

daemontools は、Unix系OSにおけるサービスの管理作業(プロセス監視、ロギングなど)をシンプルな手法で行うための支援ツールである。たとえば、supervise というプログラムは、フォアグラウンド起動させたデーモンプロセスの監視を行い、multilog というプログラムは、パイプ経由で取りこぼしなくログの記録ができる。daemontools においては スーパーユーザー権限の絞り込みが行われるため、よりセキュアな運用が可能である。

daemontools では、設定により変更可能であるが、/services というルート直下のディレクトリに各種デーモン用のサービスディレクトリを個別に配置し、各サービスディレクトリに起動スクリプト等を配置する。また監視対象のプロセスは、フォアグラウンドで起動させる必要がある。たいていのデーモンはフォアグラウンドでの起動が可能だが、バックグラウンドでしか起動できないデーモンの場合は、daemontools に含まれる fghack ユーティリティを使用してフォアグラウンドで起動させる。

djbの開発したinetd代替ソフトウェアであるucspi-tcpを併用することでさらにきめ細かい管理を行うことができる。

djbの開発したdjbdnsや、qmailのみならず、ApachePostfixMySQLIRCのボットなども daemontools の管理下におくことができる。工夫を凝らしたさまざまな起動スクリプトがインターネット上で公開されている。

主なツール[編集]

daemontools はパッケージの総称であり daemontool というプログラム自体は存在しない。この節では、daemontoolsに含まれるいくつかのユーティリティを用途別に紹介する。

svscan - サービスディレクトリ群の監視[編集]

svscan/services ディレクトリ直下を監視し、ディレクトリを発見すると、そのディレクトリ内でサービス管理デーモン supervise を起動する。

supervise - プロセスの制御と監視[編集]

supervise は、カレントディレクトリ (/service/サービスディレクトリ) 直下の run という名称のプロセス起動用のコマンドを実行する。 多くの場合、run コマンドはシェルスクリプトで記述されており、その中でデーモンの実行に必要な環境変数等を設定し、起動したいデーモンのコマンドをexecするという構造になっている。 run プロセス (exec したデーモンプロセス) が何らかの理由で終了すると、supervise はその度に run を実行する。

デーモンの起動や停止 (プロセスへのシグナルを送信) をする場合は svc コマンドを使用して supervise に指示する。。 svc コマンドの使用により各種デーモンの停止、起動を統一的な方法で管理することができる。 また、プロセス番号を意識することなく TERMKILLHUP などのシグナルを送ることができる。

supervise で起動されたプロセスは、svstatで、死活や起動時間を確認することができる。

multilog - ロギング[編集]

multilogは、標準入力からのパイプを処理し、指定したログファイルに出力する。ログの取得にUDPパケットではなく、Unixパイプを使用するため高負荷時でもsyslogdのような取りこぼしがおきない。ログのタイムスタンプtai64n ユーティリティにより、TAI64N (Temps Atomique International)フォーマットで記録される。このフォーマットは正確だが可読性が低いため、ログ閲覧時は、tai64nlocal フィルタを用いてひとの読める形式に変換する。

関連項目[編集]

外部リンク[編集]