tools
- FreeBSD Services Control(fsc) 
- FreeBSD Quarterly Status Report April-June, 2012において、 - FreeBSDサービス制御(fsc)がPorts Collectionに登録されたことが紹介されています。sysutils/ - fscに追加されています。 - fsc - (FreeBSD Services Control) - は、 - FreeBSDが提供しているサービス制御機構rc(8)およびservice(8)などに、 - さらにモニタリングと自動再起動の機能を追加するものです。Daemontools (sysutils/ - daemontools)のFreeBSD版のようなものだと考えるとわかりやすいかもしれません。sysutils/ - fscをインストールすると次のような情報が得られます。 - % pkg info -f fsc Name : fsc Version : 1. - 0.1_ - 1 Origin : sysutils/ - fsc Prefix : /usr/ - local Categories : sysutils Maintainer : trhodes@FreeBSD. - org WWW : UNKNOWN Comment : The FreeBSD Services Control family of utilties. Flat size : 41 kB Description : The FreeBSD Services Control software provides service monitoring, restarting, and event logging for FreeBSD servers. The core functionality is a daemon (fscd) which is interfaced with using fscadm. See manual pages for more information. % % pkg info -l fsc fsc-1. - 0.1_ - 1 owns the following files: /usr/ - local/ - bin/ - fscadm /usr/ - local/ - etc/ - rc. - d/ - fscd /usr/ - local/ - man/ - man5/ - fscd. - conf. - 5.gz /usr/ - local/ - man/ - man8/ - fscadm. - 8.gz /usr/ - local/ - man/ - man8/ - fscd. - 8.gz /usr/ - local/ - sbin/ - fscd % - fscは主に次のソフトウェアと設定ファイルで構成されています。 - fscd(8) : FreeBSDサービス制御デーモン。サービスをモニタリングし、対象サービスが終了した場合にサービスを再度立ち上げる処理を担当する 
- fscadm(1) : FreeBSDサービス制御管理ユーティリティ。fscd(8)に接続して管理を実施。現在モニタリングしているサービス一覧の表示、モニタリング対象を追加したり削除するといった操作が可能。指定できるコマンドはenable、 disable、 status、 close、 shutdownなど 
- fscd.conf(5) : fscd(8)用の設定ファイル。モニタリングするサービスを1行に1つ記述する。#からはじまる業はコメントとして無視される。デフォルトのデプロイパスは/usr/ local/ etc/ fscd. conf 
 - fscはほかのモニタリングツールと比べ、 - FreeBSDの提供しているサービス制御機構rc(8)をそのまま使っているため、 - FreeBSDと親和性が高いという特徴があります。 - Daemontoolsを使っている場合、 - fscは代替可能な対象として候補に入れておくとよいかもしれません。次に簡単に使い方を紹介しておきます。 - fscで制御するサービスは/etc/ - rc. - confや/etc/ - rc. - conf. - localなどでenable指定されたサービスです。そうしたサービスの中から、 - fscで制御したい対象を/usr/ - local/ - etc/ - fscd. - confファイルに書いておきます。1行1サービス名です。たとえば次のような設定ファイルを用意します。 - powerd rpcbind nfsuserd nfsclient nfscbd rpc_ - statd rpc_ - lockd ntpdate lpd smartd apache22 - fscd(8)を起動したいので、 - /etc/ - rc. - confに次の設定を追加します。 - fscd_ - enable="YES" - システムを再起動するか、 - 直接fscd(8)デーモンを起動します。 - # service fscd start tarting fscd. # - fscadm(1)を使ってみましょう。まず、 - statusサブコマンドを実行して、 - モニタリングしているサービスと、 - そのプロセス番号の情報を一覧表示させます。 - # fscadm status The fscd pid is 52608. process name pid -------------------------------------------------- apache22 1055 smartd 52434 lpd 995 nfscbd 1087 nfscbd 1086 nfsuserd 973 nfsuserd 972 nfsuserd 971 nfsuserd 970 nfsuserd 969 rpcbind 941 powerd 1019 # - 試しにサービスを強制終了してみます。ここではsmartd(8)をkill(1)で終了させます。次のように、 - 終了したにも関わらず再起動されていることがわかります。kill(1)を実行する前と後でsmartd(8)のプロセス番号が変わっていることを確認できます。 - # kill 52434 # fscadm status The fscd pid is 54172. process name pid -------------------------------------------------- apache22 1055 smartd 54559 lpd 995 nfscbd 1087 nfscbd 1086 nfsuserd 973 nfsuserd 972 nfsuserd 971 nfsuserd 970 nfsuserd 969 rpcbind 941 powerd 1019 # - fscadm(8)でsmartdをdisableしてからsmartd(8)を終了させてみると、 - 次のように起動してこなくなります。 - # fscadm disable smartd Service removed. # procstat 54559 PID PPID PGID SID TSID THR LOGIN WCHAN EMUL COMM 54559 1 54558 54558 0 1 daichi nanslp FreeBSD ELF64 smartd # service smartd stop Stopping smartd. Waiting for PIDS: 54559, 54559. # fscadm status The fscd pid is 54172. process name pid -------------------------------------------------- apache22 1055 lpd 995 nfscbd 1087 nfscbd 1086 nfsuserd 973 nfsuserd 972 nfsuserd 971 nfsuserd 970 nfsuserd 969 rpcbind 941 powerd 1019 # - 再びsmartd(8)をモニタリング対象として有効にすると、 - 自動的にsmartd(8)が起動されることがわかります。 - # fscadm enable smartd Monitoring service. # fscadm status The fscd pid is 54172. process name pid -------------------------------------------------- smartd 55693 apache22 1055 lpd 995 nfscbd 1087 nfscbd 1086 nfsuserd 973 nfsuserd 972 nfsuserd 971 nfsuserd 970 nfsuserd 969 rpcbind 941 powerd 1019 # - fscは簡単に扱えるモニタリング機能です。再起動することで問題が解決するような運用をしている場合には、 - 便利な機能として利用できます。 
- fscd(8) : FreeBSDサービス制御デーモン。サービスをモニタリングし、
