- ベストアンサー
FreeBSD における、アプリの起動スクリプトと登録の方法
いま独自のサーバ用アプリを作っています。それを、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の操作を教えていただければありがたい。
- みんなの回答 (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側に入れますね。
その他の回答 (2)
- shuyamakawa
- ベストアンサー率67% (111/164)
FreeBSD 5.X-RELEASEから、rcNGという新しい起動スクリプトの 仕組みが導入されました。(ちなみに元はNetBSDのものです。) したがってご推察のとおり、rcNGの流儀に従えば、 起動スクリプトを簡潔に記述することが出来ます。 残念ながら、いま手元に5.Xのマシンが無いため、具体例を 示すことが出来ませんが、他の方の回答を待つか、 「rcNG スクリプト 書き方」あたりでgoogle検索してみてください。
お礼
だいぶ時間かかってしまいました申し訳ありません。 というのも、肝心の独自のサーバのバグ取りがなかなか大変でインストーラまで手が回りませんでした。 おかげさまでインストーラが出来ました。
- Lean
- ベストアンサー率72% (435/603)
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 がついていない様子ですが、こっちへ入れても良いのでしょうか?この二つのディレクトリの区別はあるのでしょうか?
お礼
だいぶ時間かかってしまいました申し訳ありません。 というのも、肝心の独自のサーバのバグ取りがなかなか大変でインストーラまで手が回りませんでした。 おかげさまでインストーラが出来ました。