FreeBSD ハンドブック
Prev | Chapter 11. 設定とチューニング | Next

# 11.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` は最後の場所と考えられているということを 知っておいてください。 サービスを起動させるのにもっといい場所があるなら そこから始めてください。

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

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

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

Prev | Home | Next
アプリケーションの設定 | Up | バーチャルホスト