Daemontools

は、ダニエル・バーンスタインによって開発された、Unix系OSにおけるサービス管理のためのツールのパッケージである。Unix系OSにおける、codice_1、codice_2、codice_3 などのinitの代替としてデーモンを起動させることができる。2007年11月よりパブリックドメインとなった。
概要.
daemontools は、Unix系OSにおけるサービスの管理作業(プロセス監視、ロギングなど)をシンプルな手法で行うための支援ツールである。たとえば、supervise というプログラムは、フォアグラウンド起動させたデーモンプロセスの監視を行い、multilog というプログラムは、パイプ経由で取りこぼしなくログの記録ができる。daemontools においては スーパーユーザー権限の絞り込みが行われるため、よりセキュアな運用が可能である。
daemontools では、設定により変更可能であるが、codice_4 というルート直下のディレクトリに各種デーモン用のサービスディレクトリを個別に配置し、各サービスディレクトリに起動スクリプト等を配置する。また監視対象のプロセスは、フォアグラウンドで起動させる必要がある。たいていのデーモンはフォアグラウンドでの起動が可能だが、バックグラウンドでしか起動できないデーモンの場合は、daemontools に含まれる codice_5 ユーティリティを使用してフォアグラウンドで起動させる。
djbの開発したinetd代替ソフトウェアであるucspi-tcpを併用することでさらにきめ細かい管理を行うことができる。
djbの開発したdjbdnsや、qmailのみならず、ApacheやPostfix、MySQL、IRCのボットなども daemontools の管理下におくことができる。工夫を凝らしたさまざまな起動スクリプトがインターネット上で公開されている。
主なツール.
daemontools はパッケージの総称であり daemontool というプログラム自体は存在しない。この節では、daemontoolsに含まれるいくつかのユーティリティを用途別に紹介する。
svscan - サービスディレクトリ群の監視.
codice_6 は codice_4 ディレクトリ直下を監視し、ディレクトリを発見すると、そのディレクトリ内でサービス管理デーモン codice_8 を起動する。
supervise - プロセスの制御と監視.
codice_8 は、カレントディレクトリ (codice_10) 直下の codice_11 という名称のプロセス起動用のコマンドを実行する。
多くの場合、codice_11 コマンドはシェルスクリプトで記述されており、その中でデーモンの実行に必要な環境変数等を設定し、起動したいデーモンのコマンドをexecするという構造になっている。
codice_11 プロセス (exec したデーモンプロセス) が何らかの理由で終了すると、codice_8 はその度に codice_11 を実行する。
デーモンの起動や停止 (プロセスへのシグナルを送信) をする場合は codice_16 コマンドを使用して codice_8 に指示する。。
svc コマンドの使用により各種デーモンの停止、起動を統一的な方法で管理することができる。
また、プロセス番号を意識することなく codice_18、codice_19、codice_20 などのシグナルを送ることができる。
codice_8 で起動されたプロセスは、codice_22で、死活や起動時間を確認することができる。
multilog - ロギング.
codice_23は、標準入力からのパイプを処理し、指定したログファイルに出力する。ログの取得にUDPパケットではなく、Unixパイプを使用するため高負荷時でもsyslogdのような取りこぼしがおきない。ログのタイムスタンプはcodice_24 ユーティリティにより、TAI64N (Temps Atomique International)フォーマットで記録される。このフォーマットは正確だが可読性が低いため、ログ閲覧時は、codice_25 フィルタを用いてひとの読める形式に変換する。