書いてる人: 高橋カヲル | [mixi] | [PGP] | [RSS]
自宅では不穏な噂を聞いていたので、0.70 -> 0.76 の移行をせずにいた。が、仕事で daemontools 0.76 を使う事態になったので、慌てて調べてみる。といっても daemontools 0.76 が必須というわけではなく、 dnscache が動けばいいだけなんですけどね。
official な方法を確認するために tarball を展開して daemontools-0.76/package/boot.rclocal を眺める。ここで /command/svscanboot を見るべきだとわかる。 /command/svscanboot としてインストールされるはずのものが、 ports では /usr/local/bin/svscanboot に存在することを確認。中身は sh script だから、こいつを参考に /usr/local/etc/rc.d/svscan.sh を作ればよさそうだ。他のプログラムで /service ハードコーディングがなければ、の話だが。 setup 系を除けば
/command/svc -dx /service/* /service/*/log env - PATH=$PATH svscan /service 2>&1 | \ env - PATH=$PATH readproctitle service errors: .......
だけが残る。... があまりに長いので省略。 svc -dx ですでに動いているものを止め、 svscan で新たに /service の監視を開始、それを pipe で readproctitle に渡しているようだ。svc のマニュアルを参考にした。 ps ax | grep readproctitle とでもすると、 . の数 byte だけエラーメッセージを見ることができるようだ。さすが djb というかなんというか…
readproctitle のことを考えなければ、今まで使ってた boot script のままでイケそうなそんな新しい予感。こいつは /var/service 決め打ちなので要注意。
PATH=/usr/local/bin:/usr/bin:/bin
case "$1" in
start)
exec env - PATH="$PATH" \
csh -cf 'svscan /var/service &; echo $! > /var/run/svscan.pid'
echo -n ' svscan'
;;
stop)
if [ -f /var/run/svscan.pid ]; then
kill `cat /var/run/svscan.pid`
svc -dx /var/service/*
svc -dx /var/service/*/log
rm -f /var/run/svscan.pid
echo -n ' svscan'
fi
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
exit 64
;;
esac
exit 0
readproctitle ステでよいなら、今までの起動スクリプトを使い回してそのまま。要ハサミだ。61!
3月15日発売。
TBS で 4月2日(火) 26:20 からですか。仕事を早めに切り上げてヤンマガを読んでいたら出てきた。\
戦いの基本は格闘だ。武器や装備に頼ってはいけない。
Powered by 早起き生活