- ベストアンサー
バックグラウンドで動かすソフトのrcスクリプトについて
いつも参考にさせて頂いています。 rcスクリプトについて御教授下さい。 以前こちらで御教授いただいたstoneというパケットリピータのソフトをOS起動時に実行させたいと考えています。そこで下記設定をしました。 vi /etc/init.d/stone #!/bin/sh stone -a /var/log/stone.log localhost:123 10123/udp & stone -a /var/log/stone.log localhost:123 10123/udp,v6only & cd /etc/rc3.d/ ln -s ../init.d/stone S56stone cd /etc/rc5.d/ ln -s ../init.d/stone S56stone このようにしたのですが、psコマンドで見るとソフトは起動していませんでした。 ※OS起動時の画面ではstone OKと出ています。また、OS起動後に手動で/etc/init.d/stoneを実行すると起動できます。 OSはTurbolinux 10 Serverです。 初歩的なことだと思うのですが、うまくいきません。質問ばかりでお恥ずかしいのですが、どこがいけないか御教授いただけないでしょうか。 参考:http://oshiete1.goo.ne.jp/kotaeru.php3?q=2342620
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
サーチパスがstoneの置いてあるディレクトリに通ってないではないですか。 stoneをフルパスで指定してみてください。 なお、Ano.1で指摘されているように、rcスクリプトは起動だけでなく、停止や再起動も引数によって行なえるように書かれてなければいけません。
その他の回答 (3)
- a-saitoh
- ベストアンサー率30% (524/1722)
echo $PATHでわかるのは、そのechoコマンドを実行したシェルの現在のPATHの内容です。 stoneの止め方はstoneのマニュアルなどを読んで調べてください。もしかすると、psコマンドでstoneのプロセスIDを調べてkillするというスクリプトを書くしかないのかも知れませんけど。
お礼
御教授ありがとうございます。 とりあえず当初の目的は達成できたので、stoneの止め方などじっくり調べたいと思います。 いろいろとありがとうございました。
- a-saitoh
- ベストアンサー率30% (524/1722)
> stoneは/usr/local/bin配下にありますのでパスは大丈夫だと思っています。 「思っています」じゃなくて、本当に確認しましたか? /usr/local/binがサーチパスに入っているのはあなたの個人環境やrootの環境であって、RCスクリプトのPATHは全然別設定ですよ。
補足
ご教示ありがとうございます。 RCスクリプトはroot環境のPATHは別なんですね。基本的なところが分かっていなくてお恥ずかしいのですが、どのように調べればよいのでしょうか?Webで調べたのですが、echo $PATHでサーチパスが調べられるとあったのですが、これとは違うということでしょうか?(rootアカウントでecho $PATHとやると/usr/local/binはありました) また、dhcpdのrcスクリプトを参考に下記のようにスクリプトを作成してみました。 #!/bin/sh case "$1" in start) # Start daemons. /usr/local/bin/stone localhost:123/udp 10123/udp & /usr/local/bin/stone localhost:123/udp 10123/udp,v6only & ;; stop) # Stop daemons. echo -n "Shutting down dhcpd: " ;; restart) ;; status) ;; *) echo "Usage: dhcpd {start|stop|restart|status}" RETVAL=1 esac exit $RETVAL これでOS起動時に自動でstoneが動くようになりました。ありがとうございます。 もう一点質問があるのですが、これをstopさせる時はどのようにコマンドを実行すればよいのでしょうか。バックグラウンドで動かすプロセスなのでどのようにすればスクリプト内で停止できるのかが分かりません。申し訳ないのですがご教示いただけないでしょうか。
- chirubou
- ベストアンサー率37% (189/502)
/etc/init.d 以下はどの Linux か、ReadHat, SuSe等、によって書き方が違います。で、TurboLinux なんですね。 Turbo の場合も確か RedHat や SuSE と同じだったと思いますが(間違っているかもしれません)、strat や stop という引数によって起動したり停止したりするように書かなくてはなりません。 で、どうすればいいか、というと、他のスクリプトを見て、適当にまねすればいいのではないでしょうか。
補足
ご回答ありがとうございます。start,stopできないといけないんですね。。。 ためしに/etc/init.d/stone startとコマンドを手動で実行すると起動したんですが、これではだめということですね。他のスクリプトを真似してみます。
補足
ご回答ありがとうございます。 stoneは/usr/local/bin配下にありますのでパスは大丈夫だと思っています。 他のスクリプトを参考にstart,stop,restartできるようにスクリプトを作ってみます。