2007年09月22日

daemontoolsの/service/に、サービスを追加するスクリプト「addsv.sh」

livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

■/service/に新サービスを追加したいけど面倒くさい

daemontoolsはサービスプロセスの起動管理をしてくれる便利ツール。
サービスを新規追加する時、その独特のディレクトリ構成のおかげで、
少々面倒な作業が発生する。毎回覚えてられない。

とにかく面倒くさいのだ。



■だったら、スクリプトを作ってしまえ

簡単な事をさせたい場合、シェルスクリプトは非常に便利だ。
面倒な処理をスクリプトにやらせてしまう。

そうして作られたスクリプトは下記の通り。


▼addsv.sh
#!/bin/sh
#
# http://blog.hansode.org/
#
# $0 <service name>
#

PATH=/bin:/usr/bin:/sbin:/usr/sbin
export PATH


#
# usage
#
usage() {
  cat <<EOS
usage:
  $0 <service name>

EOS
  exit 1
}



#
# main
#
[ $# = 1 ] || usage

svdir=/service
svname=$(basename $1)
acct_name=logadmin
acct_group=logadmin

[ -d ${svdir}  ] || usage
[ -z ${svname} ] && usage
[ -d ${svdir}/.${svname} ] && usage
id ${acct_name} 2>&1 >/dev/null || { echo "no such acct: ${acct_name}"; usage; }



# directory, file

mkdir    ${svdir}/.${svname}
chmod +t ${svdir}/.${svname}
mkdir    ${svdir}/.${svname}/log
mkdir    ${svdir}/.${svname}/log/main
touch    ${svdir}/.${svname}/log/status
chown ${acct_name}:${acct_group} ${svdir}/.${svname}/log/main
chown ${acct_name}:${acct_group} ${svdir}/.${svname}/log/status


# run script

cat <<EOS > ${svdir}/.${svname}/run
#!/bin/sh

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
export PATH

exec 2>&1
sleep 3

EOS
chmod +x ${svdir}/.${svname}/run


cat <<EOS > ${svdir}/.${svname}/log/run
#!/bin/sh
exec setuidgid ${acct_name} multilog t s1000000 n100 ./main
EOS

chmod +x ${svdir}/.${svname}/log/run



exit 0

▼必要に応じて変更
acct_name=logadmin
acct_group=logadmin
log管理用アカウントを設定する。
スクリプトでは「logadmin」と言うUNIXアカウントを設定した場合の例。



■使い方

自分は上記スクリプトを/service/addsv.shとして、
/service/ディレクトリ直下においている。

▼例: 「new-service」と言うサービスを追加
$ cd /service/
$ sudo ./addsv.sh new-service
addsv.shすると、ドット付きディレクトリが作成される。
その後は、追加したサービスディレクトリ直下のrunファイルに管理したいプロセス等を記述。
$ sudo mv -i .new-service new-service
$ sudo svstat ./new-service



■関連リンク
daemontools
半袖野郎 daemontools

半袖 at 15:35 │Comments(2)TrackBack(0)daemontools  | サーバ管理

トラックバックURL

この記事へのコメント

1. Posted by katsuji    2007年09月23日 21:36
似たようなの作ったことあるなぁ。
2. Posted by 半袖    2007年09月23日 22:17
みんな作ってるんだねぇ。
某所では技術的な事を余り共有出来てない
と言う事が判明してしまったか…(笑)
便利な物は共有したいよね。

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔