• ベストアンサー

OS停止・リブート時のrcスクリプト

いつも参考にしています。 OS停止・リブート時のrcスクリプトについてご教示下さい。 あるアプリの実行シェルを/usr/local/aaaa/start.shに配置し、 /etc/rc3.d/と/etc/rc5.d/配下で下記コマンドを実施し、リンクを張りました。 ln -s /usr/local/aaaa/start.sh S80aaaa この設定でOS起動時にaaaaのアプリを起動する事は出来ました。 また、/etc/rc6.d/と/etc/rc0.d/配下で下記コマンドを実施したのですが、OS起動時に停止していないように見えます。 (/var/log/messagesを見ても停止する様子が確認できません。手動でシェルを実行した場合は/var/log/messagesにログが残ります) ln -s /usr/local/aaaa/stop.sh K10aaaa ここでのstart.sh/stop.shは単純にアプリの起動コマンド・停止コマンドを書いてあるだけのものです。 /etc/rc6.d/K10aaaaaを直接手動で実行すればアプリの停止は可能です。 同じように設定しているのになぜ停止のほうだけうまく動かないのかが分かりません。何かアドバイスがあればお願いします。

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

  • ベストアンサー
  • entree
  • ベストアンサー率55% (405/735)
回答No.2

ディストリが Redhat であれば、以下のような設定をスクリプトに追加してください。これはアプリケーションが現在起動しているかどうかを確認するために使用されます。(二重起動、停止を避けるため) 'start') touch /var/lock/subsys/aaaa 'stop') rm -f /var/lock/subsys/aaaa 多分、起動時に /var/lock/subsys/aaaa を作成していないために、aaaa は起動していないと判断されて、stop 処理が行われなかったと考えられます。

muraalto
質問者

お礼

ご回答ありがとうございました。 ご教示いただいた設定でアプリケーションを停止させる事が 出来ました。 起動シェルと停止シェルは関係性があったんですね。勉強になりました。

その他の回答 (1)

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.1

start.sh及びstop.shの内容がわからないのでなんとも言いようがないのですが、バックグラウンドプロセスで動かしているのでしたらちゃんと「kill」なり「killproc」でプロセスを殺してますよね? もちろんstart時にPIDなり作って・・・ どうなんでしょうか?

muraalto
質問者

お礼

ご回答ありがとうございます。 start.shでtomatとPostgreSQLを動かしています。 kill等しなくても、tomcatとPostgreSQL停止することが出来ました。

関連するQ&A