- 締切済み
自作スクリプトがいつの間にか落ちています
お世話になります。 今、自前でサーバー監視(冗長化)のためのスクリプトを作成しているのですが、2~3日ほど動かしているといつの間にかそのスクリプトのプロセスがいなくなっています。 原因追求方法というか、スクリプト内で問題があったらエラーをログに吐いて終了するようにしているのですが、ログにはなにも残っていません。 まだスクリプト初心者でよくわかっていないのですが、自分なりにいろいろ考えて作っています。 2~3日は動いているのでソース自体には問題ないと思っています。 今回知りたいこととしては ・なぜおちるのか ・原因究明方法 を参考程度に教えていただければと思っています。 ちなみに仕様としては、 サーバー2台構成(現用、待機)で待機側から現用へ向けてpingを使いネットワークステータスを監視しています。 待機から現用へ疎通がとれなくなると自分のIPを書き換え現用で監視していたものと同じプロセスを起動し、exit 1 で抜けます。 現用側では目的のプロセスを監視するスクリプトを組んであり、そのプロセスがおちるとネットワークを切断し、exit 1 で抜ける仕様になっています(このスクリプトは問題ありません) シェルは posix を使用しています。 詳細なところはもっといろいろありますが(ログを吐いたりメールを送ったりなど)概要的にはこんな感じで一応HAを実現しています。 もちろんですが、cron などの定期処理はなし。サーバーがリブートした形跡もありません。忽然とプロセスが姿を消しています。 今考えていることとしては スクリプトの先頭にset -x を置いて現象が再現するまでひたすらログをとり続けるしかないのかなぁとおもっています。 どなたか知恵をお貸しいただけないでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Quux
- ベストアンサー率57% (16/28)
なんらかのリソース制限にかかっている可能性。 ulimit
処理が止まる場所でそのままscriptが落ちる可能性。 通常はエラーを返してそれをもってエラー処理を取り出し終了するものと思われる。 エラーを受け取らずにプロセスが落ちてる可能性。 set -x を使うかどうかは別として原因が判るまでは挙動をログに取ってどの辺りで落ちているのかを確定した方が良いと思う。
お礼
エラーを受け取らずにプロセスが落ちてる可能性。 なるほど、ありえますね。。。 回答ありがとうございます。