daemontools 覚書
daemontoolsをFreeBSDに入れて設定してみた時の覚書
FreeBSDならば、pkgでinstallできる。
# pkg search daemontools daemontools-0.76_18 Service monitoring and logging utilities by djb
※ソースからインストールする場合は、以下の手順を追うことになるらしい?
installが終わったら、自動起動の設定をします。
FreeBSDならば、rc.confに以下の様に記載することになるでしょう。
svscan_enable ="YES"
基本的に、/usr/local/etc/rc.d以下にある、svscanの中身を確認すると
rc.confに記載する内容がわかります。
rc.d以下のスクリプトを利用せずに起動する場合は、以下を用いると良さそう(?)
csh -sf 'svscan /service &'
また、上記の内容で自動化したい場合は、rc.localを作成して以下のように記載すると良い?(引用元)
env - PATH=/usr/local/bin:/usr/bin:/bin csh -sf 'svscan /service &'
次に、daemontoolsで管理したいプログラムを指定します。
適当に、ディレクトリを作成します。
mkdir /myjob
作成したディレクトリ以下に任意のプログラムのrunファイルを作成します。
mkdir /myjob/test_job touch /myjob/test_job/run vim /myjob/test_job/run
runファイルには、今回は以下のスクリプトを記述します。
#!/bin/sh i=1 while [ 1 ]; do echo $i i= expr $i + 1 sleep 1 done;
任意のプログラムを実行したい場合は、以下のような記載をする必要があります。
#!/bin/sh echo starting nginx exec /usr/local/sbin/nginx
logを吐かせるためには、以下の操作が必要になります。
mkdir /myjob/test_job/log touch /myjob/test_job/log/run vim /myjob/test_job/log/run
logを吐かせるためのrunファイルには、今回は以下のように記載します。
#!/bin/sh exec multilog t n50 ./main
これで、daemontoolで管理した際に、対象プロセスの管理状態についてのログが出力出来るようになります。
最後に、各runファイルの権限の修正をします。
chmod 1755 /myjob/test_job
test_jobのスティッキービットを立てることで、log以下をsvscanが参照できるためlogを吐く場合は必要です。
これで、一通り準備ができました。
あとは、 /service以下に、 /myjob/test_jobのシンボリックリンクを作成します。
cd /service ln -s /myjob/test_job
シンボリックリンク作成後は、5秒以内にrunファイルが実行されます。 (この実行によって、execで指定されたプログラムが実行されます。)
svstatを使って実行状態が確認できます。
# svstat /service/test_job /service/test_job: up (pid 1179) 5845 seconds
svcを利用して、プロセスの起動、終了が制御できます。 ・ 終了
# svc -d /service/test_job # svstat /service/test_job /service/test_job: down 6 seconds, normally up
・ 起動
# svc -u /service/test_job # svstat /service/test_job /service/test_job: up (pid 12770) 7 seconds
注意点としては、runファイルを修正する場合は、
/myjob/test_jobをリネームして、新規でフォルダ構成を作り直す必要があるとのこと。
(superviseディレクトリが作られると、runファイルの書き換え後の処理が読まれない場合がある模様)
以上が、daemontoolsをいじった時の覚書です。
daemontoolsを弄ってた時に調べたサイトのURL一覧
http://yang.amp.i.kyoto-u.ac.jp/~yyama/FreeBSD/adm-ps/daemontools-j.html
http://www.emaillab.org/djb/daemontools/daemontools-howto.html
http://www.omakase.org/freebsd/daemontools.html
http://keisyu.hateblo.jp/entry/2014/02/12/234834
https://www.slideshare.net/klab-tech/daemontools-systemd (これは、daemontoolsからsystemdへ移行する話の模様)
http://q068891.hatenablog.com/entry/2018/06/10/021338
https://bayashi.net/wiki/linux/daemontools
http://www.marronkun.net/linux/other/daemontools_000039.html
http://www.unixuser.org/~euske/doc/daemontools/myfaq/faq-3.html