• ベストアンサー

rc.localについて

RH7.2を使ってます。 起動の初期化スクリプトで2点質問です。 1.rc.localでの指定はinit.d配下(rcx.d)の処理後一番最後に実行される  と認識しているのですが、これは単にrcx.dにてS99localとなっていて  一番最後にシンボリックリンクされているからということでいいのでしょうか? 2.rc.localはいったいどのような時に使うのでしょうか?  全てinit.d配下にスクリプトを置いた方がスマートだと思うのですが...。 以上、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • retr
  • ベストアンサー率75% (30/40)
回答No.3

>rc.localには強制的に落とされていいものか、起動時に一回だけ処理して常駐しないものを記載するというところに落ち着いたのですが... そうですね、killされると正常な終了処理がなされないもの(普通はシグナルを捕捉して、正常に対処するはずです)、起動・停止以外に、reload、restart、statusなどの処理をするあるもの、ランレベルによって起動するかどうかが変わるものなどが起動スクリプトを用意したほうがいいという感じですね。 でも、そんなにこだわるほどの問題ではないかと。結局は、管理者の気分次第ですね(笑) ソースからインストールした場合も、起動スクリプトのサンプルがdocumentとして用意されていることが多いので、そういったものを利用すると面倒でもないですね。 私は、起動スクリプトの雛型を用意して、毎回簡単に作ってます。 >「TCPのコネクションを切断する方法」 要は、任意のパラメータのパケットを作成すればいいので、以下のスクリプトを使ってみようかと検討中です。 http://www.geocities.co.jp/SiliconValley/1667/readme_barrage.txt 自分で書きたかったのですが、使用中の送信元ポートなどを指定することができなくて...

noname#41382
質問者

お礼

何度もありがとうございました。 >要は、任意のパラメータのパケットを作成すればいいので、 > なるほど!そういうことですよね。 何かケーブルを切断するようなイメージから抜けられませんでした。 参考にさせていただきます。 ありがとうございました。

その他の回答 (2)

  • retr
  • ベストアンサー率75% (30/40)
回答No.2

1に関しては、おっしぁっているとおり、S99localによるものです。 rc.sysinitとちがって、ここが変わると、ブートプロセルの最後に処理されるとは限りません。 2に関してですが、同感ですよ。 基本的には、起動スクリプトを用意したほうがスマートです。start、stopだけでなく、statusやrestartなどもできるようにできますので。 >rc.local指定ではstop処理はしないのですよね? そうですね。 かわりに、ランレベル0や6では、S99killallなどで終了処理されることになります。 (それぞれに適した終了処理ができるとは限らないので、やはりrc.localに書かないほうがいいのではと思います。

noname#41382
質問者

お礼

回答ありがとうございました! >かわりに、ランレベル0や6では、S99killallなどで終了処理されることになります。 > なるほど!強制終了はそこら辺で行われているのですね。勉強になりました。 実際に自分の環境(rc0.d)をみたところ、S00killall、S01haltってのがあって、 S00killallは動いているサブシステムを単に/etc/init.d配下にあるものをstopかけているだけで、 rc.localについては何もしていないようでした。 で、S01halt側は/sbin/killall5 というプログラムによってtermシグナルを発行し、 それでもだめならkill シグナルが発行されているようでした。 こちら側でrc.localのものが強制的に落とされているということですね。 となると、rc.localには強制的に落とされていいもの(どんなものだ?)を記載するか 起動時に一回だけ処理して常駐しないプロセス(ntpdate等かな?)を記載するというところに落ち着いたのですが... どうでしょうか?

noname#41382
質問者

補足

今件とは関係ないのですが、 以前retrさん「TCPのコネクションを切断する方法」という質問を投げられていましたよね? そのまま締め切られたようですが、何かいい方法がわかったのでしょうか? 実は自分も結構言われていたようなことをしたいことがあって、 あの質問で良回答が出ることをかなり期待していたのですが...。

  • madman
  • ベストアンサー率24% (612/2465)
回答No.1

1.S99localだと、Sは起動用スクリプト、99は他の数字の若い順に起動する番号。 99は通常最後。localは単に人が見たとき解りやすくする名前。 2.ユーザーが任意に設定したものを明示的にする為にあります。 元々Unix系はサーバーとして作られていますので、管理者が変わったり、複数の人間で管理した時でもわかりやすいようにそうなっています。 個人だけが利用する場合は、どんな風に書こうと問題ありません。

noname#41382
質問者

補足

アドバイスありがとうございました。 >1.S99localだと、Sは起動用スクリプト、99は他の数字の若い順に起動する番号。 >99は通常最後。localは単に人が見たとき解りやすくする名前。 > ようはrc.sysinit は/etc/inittab内にて si::sysinit:/etc/rc.d/rc.sysinit といった感じで明記されているので、一番最初に起動というのはわかるのですが、 rc.localは各rcx.d内に記載されているので、一番最後とは限らないのでは?と思った次第です。 例えばS01localとかした場合とか。 rc.localは最後に起動するものを記載 と訊いたのでそこら辺がどうなのか疑問でした。 2.については、「rcx.d内のものはシャットダウン時に終了処理をする」のでは?と思ってます。 rc.local指定ではstop処理はしないのですよね? どうなんでしょうか?

関連するQ&A

専門家に質問してみよう