monolithic kernel

Ubuntu 9.10にdaemontoolsを導入する

Ubuntu 9.10環境にdaemontoolsを導入してみます。こいつを入れるとデーモンの死活監視やロギングが便利になるらしいです。

インストール

aptitudeでインストールできます。

sudo aptitude install svtools daemontools-run

死活監視の対象を追加してみる

/etc/service以下にデーモン毎のディレクトリを作成し、その中にrunという名前で実行可能なファイルを配置すると、自動的に死活監視が行われます。

今回は、実行可能なRubyスクリプト、/home/mono/work/rubyist_bot/rubyist_bot.rbを例に記述を示します。

sudo mkdir -p /etc/service/rubyist_bot
cd /etc/service/rubyist_bot
sudo vi run
sudo chmod +x run

runファイルの中身は以下のように記述します。

#!/bin/sh

cd /home/mono/work/rubyist_bot
exec ./rubyist_bot.rb

ここまでの手順で死活監視は開始していますが、このままだとrootとして動作するためセキュリティ上よろしくありません。そこで、setuidgidコマンドを挟んで適切なユーザを指定して動作させるようにします。

#!/bin/sh

cd /home/mono/work/rubyist_bot
exec setuidgid mono ./rubyist_bot.rb

runファイルを書き換えただけでは実行中のプロセスには影響しないので、いったん再起動して反映させます。再起動させるためにはsvcコマンドに-tオプションを指定して実行します。

sudo svc -t /etc/service/rubyist_bot

以上で作業は終了です。うまくいっていれば対象のプロセスが適切なユーザで起動してることが確認できるはずです。

追記

  • 2010/05/11
    • setuidgidに関する記述を追加