FreeBSD 7.3-RELEASEとFreeBSD 8.1-RELEASEからserviceコマンドが入るそうです。ちょうどFreeBSD 9-CURRENTを触る機会があったので、使ってみました。
例えば、Apache 2.2(www/apache22)を有効にする場合は、これまでこんな感じでやっていたと思います。
- /etc/rc.confに「apache22_enable="YES"」を追加する。
- 「/usr/local/etc/rc.d/apache22 start」を実行する。
これが、serviceコマンドを使うと次のようになります。
- /etc/rc.confに「apache22_enable="YES"」を追加する。(これは以前と同じ)
- 「/usr/sbin/service apache22 start」を実行する。
あまり変わらないように見えますが、次のようなケースで便利になります。
- 起動スクリプトの配置場所が、システム標準のサービス(/etc/rc.d)と、portsからインストールしたサービスで違っているが、同じコマンドで操作できる。
- 設定で有効になっているサービスを確認できる「/usr/sbin/service -e」で、/etc/rc.confの記述が正しいかどうか確かめられる。
- システムにどんなサービスがインストールされているか、「/usr/sbin/service -l」や「/usr/sbin/service -r」で確かめられる。
Linuxではserviceコマンドが用意されていることが多かったので、両方使う人には同じように使えて便利だと思います。
serviceコマンドのマニュアルには例として、bashでserviceコマンドのパラメータを補完させる方法が載っていました。
_service () {
local cur
cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $( compgen -W '$( service -l )' -- $cur ) )
return 0
}
complete -F _service service
$HOME/.bash_profileあたりに書いておくと便利かもしれません。