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