2012年5月30日水曜日

daemontools


このエントリーをはてなブックマークに追加


以下Ubuntuの場合。
CentOSの場合は、こちら


インストール



$ sudo apt-get install daemontools daemontools-run svtools
$ sudo reboot # svscanを起動するため再起動



設定


/service以下にプロジェクトと同じ名前のディレクトリを作成。
(logをとる場合、一旦 .pj名のようにドットを入れておいて、daemontoolsに認識されないようにしておいてlog/runも準備してから、renameする。このタイミングでしかsuperviseを作ってくれないみたい。)

しかしubuntuは/etc/service/だった。
/etc/service/サービス名/runを作成。このrunはプロジェクトの中に書いておいて、それのシンボリックリンクにする。


log設定


以下を作成。
/etc/service/サービス名/log/run
/etc/service/サービス名/log/main/

runの中身は、



#!/bin/sh
exec setuidgid logadmin multilog t s1000000 n100 ./main


ユーザも作成しておく。
sudo /usr/sbin/useradd -s /sbin/nologin -d /dev/null logadmin
あとは各ディレクトリの権限をlogadminが書き込めるようにしておく。

以下でログ監視。
tail -f /etc/service/PJ_name/log/main/current | tai64nlocal


動作確認


ps auxf で見てみる。
readproctitle service errors: ...ile does not exist?supervise: fatal
エラーでてるけど、正常に動く、、、はて。
killしてみて、異なるPIDで復活してたので、OK。

追記
http://tech.dclog.jp/2010/12/daemontools.htmlによると、
readproctitleは一度エラーメッセージを出すと、ずっと残るようだ。
メッセージクリア用のコマンドを用意して、消したいときに消せるようにする。

/service/clearmsg/run



#! /bin/bash
yes '' | head -4000 | tr '\n' .


touch /service/clearmsg/down #普段は実行させない
svc -o /service/clearmsg #一度だけ実行





0 件のコメント:

コメントを投稿