12.5. サービスの起動

一つのシステムでサービスをいくつも立ち上げているということは よくあることです。 それらには独自の立ち上げかたがあることがあり、 それぞれ有利な点があります。

Ports collection やパッケージからインストールしたソフトウェアは しばしば /usr/local/etc/rc.d にスクリプトを置き、 システムが起動した時には start、システムをシャッ トダウンする時には stop を引数にして実行します。 これは root で実行すべき、または root で起動することを期待されているシステム ワイドなサービスを起動する場合に推奨される方法です。 これらのスクリプトはパッケージの一部としてインストール時に記録され、 パッケージとともに削除されます。

/usr/local/etc/rc.d にある 一般的なスクリプトは次のようなものです。

#!/bin/sh
echo -n ' FooBar'

case "$1" in
start)
        /usr/local/bin/foobar
        ;;
stop)
        kill -9 `cat /var/run/foobar.pid`
        ;;
*)
        echo "Usage: `basename $0` {start|stop}" >&2
        exit 64
        ;;
esac

exit 0
   

このスクリプトはその目的を果すべく起動時に start、 シャットダウン時に stop をつけて呼ばれます。

サービスの中には固有のポートに接続を受けたときに inetd(8) から起動されるものもあります。 これはメールリーダサーバ (POP や IMAP 等) の場合によくあります。 これらのサービスは /etc/inetd.conf ファイルを編集することで有効化されます。 このファイルの編集に関する詳細は inetd(8) を見てください。

これらの他に /etc/rc.conf による有効化/無効化がカバーされていないサービスもあります。 それらは伝統的に /etc/rc.local にコマンドを書き込むことで実行されていました。 FreeBSD 3.1 にはデフォルトの /etc/rc.local は存在していません。 もし管理者によって作られていれば、 その時は一般的なやりかたとして認められるべきでしょう。 rc.local は最後の場所と考えられているということを 知っておいてください。 サービスを起動させるのにもっといい場所があるなら そこから始めてください。

注意: /etc/rc.conf でその他のコマンドを実行しないでください。 そのかわり、デーモンの起動やブート時のコマンド実行は /usr/local/etc/rc.d にスクリプトを配置してください。

この他にサービスの起動に cron(8) を利用することもできます。 このアプローチには、cron(8) がそのプロセスを crontab の所有者権限で実行したり、サービスが 非特権ユーザによって立ち上げられ管理されるなどといった有利な点が いくつもあります。

これで cron(8) の機能の利点を得ることができます。 日時の指定を @reboot で置き換えることでジョブは システムがブートした直後、cron(8) が起動した時に実行されます。

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。