最近、いつ泣きましたか?

いま独自のサーバ用アプリを作っています。それを、FreeBSD起動時に自動的に立ち上がるようにしたいのですが、方法が分かりません。教えていただける方、あるいは、参考URLをご存知の方お教えください。

たとえば、linuxでしたら、

/etc/init.d/hogehoge start
とすると、hogehogeアプリを起動し、
/etc/init.d/hogehoge stop
とすると、hogehogeアプリを停止するようなスクリプトを書きます。hogehoge中身は、たとえば、以下のような感じですかね。

-----------------------------------------------------
#! /bin/sh
#
# chkconfig: 2345 85 15
# description: hoge hoge ...

. /etc/rc.d/init.d/functions

cd /usr/local/xl-gbs
PATH=$PATH:/usr/local/xl-gbs/xlscript/bin
export PATH

start() {
xl gbserver.xl / start
echo
}

stop() {
xl gbserver.xl / stop
echo
}

restart() {
stop
start
}

case "$1" in
start)
start
;;
stop)
stop
exit 1
;;
restart)
restart
;;
*)
;;
esac
exit 0
-----------------------------------------------------

その上で、

% chmod 0755 /etc/init.d/hogehoge
% chkconfig --add /etc/init.d/hogehoge

という風に登録します。

まあ、この操作に対応するFreeBSDの操作を教えていただければありがたい。

A 回答 (3件)

どちらかというと、4-STABLEを使用してきていたので、5.x系はあまり詳しくないですが。



最低、
 1. サブルーチン群の読み込み(/etc/rc.subr)
 2. スクリプト名の指定(name)
 3. 起動するコマンド指定(command,start_cmd,stop_cmd等)
 4. 実際の起動関数の呼び出し(run_rc_command "$1")
を行えば大丈夫だと思います。

詳しくは、man rcとかman rcorderとか/etc/rc.subrのコメントあたりでも参照してみてください。

例で上げたスクリプトだと以下のような感じかな?
(正常に動作するかは保障できませんが)

-------8<-------8<-------8<-------8<-------
#!/bin/sh

cd /usr/local/xl-gbs
PATH=$PATH:/usr/local/xl-gbs/xlscript/bin
export PATH

. /etc/rc.subr

name=gbserver

start_cmd=gbserver_start
stop_cmd=gbserver_stop

gbserver_start() {
xl gbserver.xl / start
echo
}

gbserver_stop() {
xl gbserver.xl / stop
echo
}

run_rc_command "$1"
-------8<-------8<-------8<-------8<-------

>また、/etc/rc.d の下にも同じようなファイルがいっぱいあります。
>こちらは.sh がついていない様子ですが、こっちへ入れても良いのでしょうか?
>この二つのディレクトリの区別はあるのでしょうか?

No.1でも少し触れましたが、システムで最初から用意されているものが/etc/rc.dディレクトリ配下、後からPackegeやPorts、ソースからのインストール等いれたものが/usr/local/etc/rc.dという感じですかね。
別に/etc/rc.dに入れたければ入れても構わないと思いますが、個人的には今までの使用してきた癖で/usr/local/etc/rc.d側に入れますね。
 
    • good
    • 0
この回答へのお礼

だいぶ時間かかってしまいました申し訳ありません。
というのも、肝心の独自のサーバのバグ取りがなかなか大変でインストーラまで手が回りませんでした。
おかげさまでインストーラが出来ました。

お礼日時:2005/07/31 14:24

FreeBSD 5.X-RELEASEから、rcNGという新しい起動スクリプトの


仕組みが導入されました。(ちなみに元はNetBSDのものです。)
したがってご推察のとおり、rcNGの流儀に従えば、
起動スクリプトを簡潔に記述することが出来ます。

残念ながら、いま手元に5.Xのマシンが無いため、具体例を
示すことが出来ませんが、他の方の回答を待つか、
「rcNG スクリプト 書き方」あたりでgoogle検索してみてください。
    • good
    • 0
この回答へのお礼

だいぶ時間かかってしまいました申し訳ありません。
というのも、肝心の独自のサーバのバグ取りがなかなか大変でインストーラまで手が回りませんでした。
おかげさまでインストーラが出来ました。

お礼日時:2005/07/31 14:23

Linuxでのような操作はありません。


通常、PackagesやPortsから何かソフトウェアをインストールした場合のようにシステム以外のローカルなものの起動スクリプトは「/usr/local/etc/rc.d」ディレクトリ配下に「hogehoge.sh」(.sh付きでないと起動対象とならない)というファイル名の形式で置けばいいだけです(もちろん実行可能であることは前提ですが)。

起動/停止については、Linuxと同様に「hogehoge.sh start」、「hogehoge.sh stop」というように呼ばれます。

例に上げたスクリプトも修正すればFreeBSDでも使用出来ると思います。

この回答への補足

いま、てもちのFreeBSDの/usr/local/etc/rc.dの中みを見てみましたが、

% ls
000.pkgtools.sh
% cat 000.pkgtools.sh
#!/bin/sh
#
# $Id: pkgtools.sh 1047 2004-12-25 15:35:21Z knu $

# PROVIDE: pkgtools
# REQUIRE: ldconfig
# KEYWORD: FreeBSD

. /etc/rc.subr

name=pkgtools

start_cmd=pkgtools_start
stop_cmd=:

[ -z "$pkgtools_libdir" ] && pkgtools_libdir="/usr/local/lib/compat/pkg"

pkgtools_start() {
if [ -d "$pkgtools_libdir" ]; then
/sbin/ldconfig -m "$pkgtools_libdir"
fi
}

load_rc_config $name
run_rc_command "$1"
%

てな感じですね。どうも、最低限、start_cmd、stop_cmdという二つの変数(?)をセットアップすればよさげに見えますが、そんな解釈で良いのでしょうか。

また、/etc/rc.d の下にも同じようなファイルがいっぱいあります。こちらは.sh がついていない様子ですが、こっちへ入れても良いのでしょうか?この二つのディレクトリの区別はあるのでしょうか?

補足日時:2005/05/09 17:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!