• 締切済み

Linuxの起動と起動スクリプトにつきまして

Linuxの起動と起動スクリプトにつきましてご質問させてくださいませ。 chkconfig などで Sではじまる起動スクリプトを定義した場合 起動時にスタートさせるプロセスでありKで始まるものは、シャットダウン時に自動停止(引数stop)すると思いますが、たとえばSで始まるスクリプトのみ定義しておりそのスクリプトにKの定義がなかったばあい、自動停止はしないのでしょうか? シャットダウン時には、どのような挙動になるのでしょうか? その場合、killなどで強制的に切れるのでしょうか? よろしくお願い申し上げます。

みんなの回答

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.5

> ランラベル6でK「スクリプト名」と定義されてるのに 正確には「[SK][0-9][0-9]スクリプト名」、つまりS/Kとスクリプト名の間に2桁の数値が入るのですが、それは大丈夫ですか? まぁ先にsyslogがstopしてしまってて/var/log/messageに書かれてないだけ、なんて可能性もあるかもしれませんが。

y_mikami19
質問者

お礼

D-Matsu様 遅くなり大変申し訳ござません。 ご回答いただきましてありがとうございました。

回答No.4

回答No.2での y_mikami19 さんの理解で合ってます. 回答No.3の回答も合ってます.

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.3

ランレベル遷移で発生するスクリプト実行は共通処理ですが、その処理は自分がどのフェーズで呼ばれているかを知りません。 そこにあるものを、命名規則に従って粛々と実行しているだけです。 なのでシャットダウン処理中であろうがSで始まるスクリプトはstartオプション付きで呼ばれますし、起動中であろうがKで始まるスクリプトはstopオプション付きで呼ばれます。 ただし、そのスクリプトの中身がデーモンの起動や停止処理であるかどうかはまた別の話です。

y_mikami19
質問者

補足

D-Matsu様 ありがとうございます。 ことなった質問になってしまいますが、宜しくお願いいたします。 今回、ランラベル5で起動しランラベル6でリブートしそのログを Messageログより見ますと、ランラベル5で自動起動していたものが ランラベル6でK「スクリプト名」と定義されてるのにSTOP(処理)されてません。そのスクリプトだけ飛ばされております。 通常の自動起動自動停止が定義されており正常に実行された場合 start スクリプト名 stop スクリプト名 が実行されると認識しておりますが、 上記の場合 start スクリプト名 STOPの処理が飛ばされています。 そのプロセスはどのような終わり方をするのでしょうか? なぜ、処理が飛ばされるのでしょうか? 以上 宜しくお願いいたします。     

回答No.2

No.1の回答への補足です. システムを停止する場合はランレベル0になり /etc/rc0.d 内の Kで始まるスクリプトが実行され,既存のサービスがあれば それを終了させます.続いて Sで始まるスクリプトが実行され,新しいサービスを開始します. Ubuntu の /etc/rc0.d の最後のスクリプトは以下のようになっています. S90halt -> ../init.d/halt こんな手順でシステムを停止させています. 最初の質問に戻ると シャットダウン時に確実に停止させたいサービスは Kで始まるスクリプトを用意すべきだということになります. 参考書籍:RUNNING LINUX (O'REILLY ISBN4-87311-131-5)

y_mikami19
質問者

補足

ricky-oda様 y_mikami19でございます。 シャットダウン時 ランレベル0でKで始めるスクリプトを実行後 Sで始めるスクリプトが実行されとございますが、 シャットダウン処理においても 最初にKで始めるスクリプトが停止しその後Sで始めるスクリプトが起動させているということでしょうか? 起動時もランラベル5で起動される場合、SやKが各スクリプトについておりますが、その仮定においてもスタート停止がおるということでございましょうか。 要は 起動時にいおいて、スクリプトを開始するだけだとおもっておりましたが、停止処理もおこなっているのでしょうか? よろしくお願いいたします。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

SとKに対する挙動の理解が若干違います。 これは「特定のランレベルになったときにそのデーモンを起動または終了」で、起動時に限らずランレベルの変更があればいつでも実行されます。 で、これは通常j/etc/rc[0-6].d以下にあるスクリプト(へのシンボリックリンク)を検索して実施されるので、ここにリンクが置かれていない場合には該当ランレベルでは何もしない(起動・終了とも)ことになります。 なおシャットダウン時に残っているプロセスは(デーモンに限らず)もちろんkillされます。

関連するQ&A