ubuntuでチャットサーバーのプログラムを書いて実行させているのですが、エラーで終了してしまいます。

なので、シェルスクリプトで実行させ、エラーになっても自動で再起動するようにしたいです。
これを書くとどんな感じになるのでしょうか?
ちなみに、実行は
$ ruby -Ku chatserv.rb
で実行しています。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/06/03 20:56:27
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:Committeeman No.1

回答回数153ベストアンサー獲得回数19

ポイント20pt

プロセス監視をするシェルスクリプト

http://www.rhythm-cafe.com/shell/Sample02.aspx


>エラーで終了してしまいます。

そのエラー原因をつぶす事を考えたほうがいいのだろうが、それは不要なのか?


>実行は $ ruby -Ku chatserv.rb で実行しています。

何を参考にして作ったものかわからないが「スクリプトで直に実行するようなもの」なのか?

チャットシステムということはapacheなどのwebサーバからアクセスして使うようなものだと思うが、そのあたりをどのように実装しているかを明かしてデバッグしたほうがいいだろう

id:hanako393 No.2

回答回数1142ベストアンサー獲得回数87

ポイント20pt

チャットサーバーのポートにアクセスして生きていたらそのまま

死んでいたら起動

cronで定期的にバッチを実行すればよい。

id:mtotugu No.3

回答回数75ベストアンサー獲得回数3

ポイント20pt

実行してるやつを替えてみるのはどうでしょう

id:fenstrial No.4

回答回数57ベストアンサー獲得回数14

ポイント20pt

デーモンとして動作させる気がないのなら下のスクリプトでどうでしょう。

単純に無限ループさせているだけです。


#!/bin/sh

while true

do

ruby -Ku chatserv.rb

done


また、プログラムミスでないエラーなら、例外処理を使ってみてはどうでしょうか。

id:doropon No.5

回答回数94ベストアンサー獲得回数16

ポイント20pt

プログラムは書いたようにしか動かないものですが、

エラーで終了する。というふうに書いてあるからです。

そのようなことを書いてはいないと。思われるかもしれませんが、

例外なりが発生しても終了しないように書かないと終わってしまいます。

とりあえずはデバッグでしょうけど。終了してしまう箇所を探し、原因を見つけて終了しない事にする。

かと思います。

昔perlでエラーをキャッチして落ちないようにするのにevalばっかり増えてしんどい思いをしましたが、いまのrubyなんかではいけるんじゃないのですかね。

フロントのweb部分とバックエンドのデーモンなにかを作ってあげるといいような気もしますが。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません