• 締切済み

CGI経由で起動したプロセスが停止してしまう

CGIからある処理プロセスを実行させているのですが、このプロセスを長時間実行させたままにしておくと停止してしまいます。 (このプロセスはあるファイルの状態を監視しているので、停止の指示をしない限りずっと動かしっぱなしにしておきたいのですが・・・) このプロセス自体がおかしな動きをしているようには見えないのですが、何が原因で停止してしまうのか、またどうすれば停止しないようになるのか教えていただけないでしょうか? OSはRedHat Linux 5.1です。

みんなの回答

noname#208124
noname#208124
回答No.2

例えばApacheではRLimitCPUでCGIで起動されたプロセスの時間を制限します 無限ループしてしまったCGIや意図的な負荷をかけるCGIからサーバーを守るためです

MOYAJI
質問者

お礼

回答ありがとうございます httpd.confを確認してみましたがRLimitCPU等の制限の記述は定義していませんでした。 またulimitコマンドで確認したところCPU時間等の制限はかけていませんでした。 ひとつ気になるのがプロセスが停止してしまった時にhttpdのログにSIGHUPの受信があったのですがこれは関係あるのでしょうか? 質問ばかりで申し訳ありませんがご教授願います。

  • eroermine
  • ベストアンサー率18% (83/444)
回答No.1

停止でも終了でもどこかからsignalが来たためだと思うので、 C言語ならmainの頭で signal(SIGHUP, SIG_IGN); signal(SIGKILL,SIG_IGN); こんなふうに無効にしておけばだいじょぶでしょう。

MOYAJI
質問者

お礼

回答ありがとうございます。 上記回答のようにすればプログラム内でsignalを無視できるということはわかったのですが、そもそもsignalはなぜ送信されるのでしょうか? signalを送信されないよいうにすることはできないのでしょうか? プロセスのCPU使用時間の上限やメモリの使用量の上限等はcshのlimit コマンドで調べたところ制限はかかっていませんでした。 Linux初心者でこのあたりの処理や制限についての知識がないので ご教授願えないでしょうか。

関連するQ&A