kinjouj.github.io

daemontools


Linux

daemontoolsを使用して、/etc/rc.dとは違う方法でサービスを管理してみる

インストール

http://cr.yp.to/daemontools/install.htmlからダウンロードする。但し、daemontoolsは解凍後のアーカイブを利用するので削除しない事。更にqmail同様にerror.hは修正する事

tar zxvf daemontools-VERSION.tar.gz
mv admin /opt/daemontools
cd /opt/daemontools/daemontools-VERSION
package/install

これが終わると/etc/inittabの末尾にsvscanbootが追加される

管理するサービスの設定

とりあえずqmailを追加してみる。以下のようなディレクトリ構造を作成

- qmail_home [DIR]
  - service [DIR]
    - run [FILE]
    - log [DIR]
      - run [FILE]

上のrunを作成していく

qmail_home/service/runの作成

#!/bin/sh

exec /path/to/qmail/rc &

この際に注意として、rc内にqmailサーバー関連を起動させている場合のsploggerを使っている場合は削除する事

qmail-home/service/log/run

#!/bin/sh

exec /usr/local/bin/setuidgid qmail /usr/local/bin/multilog t /var/log/qmail

権限の設定

chmod +t /path/to/qmail/service/qmail
chmod +x /path/to/qmail/service/qmail/run
chmod +x /path/to/qmail/service/qmail/log/run

リンクを生成

作成したサービス設定をdaemontoolsが使用する/serviceにリンクさせる

ln -s /path/to/qmail/service/qmail /service/qmail

起動・停止できるかテスト

# 起動
svc -u /service/qmail

# 停止
svc -d /service/qmail

# 状態を表示
svstat /service/qmail

小メモ: サービスを自動起動させないようにする

/service/サービス名/downというファイルがあると、再起動時に自動で起動しなくなる