M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2010年1月17日 23:28

Proc::Daemon使った時のデバッグが大変だ

このエントリーをはてなブックマークに追加 mixiチェック

とある事情でLinuxでDaemonを作っていますが、相変わらずPerlで作っておりまして、

Perl Tips | Perl で、デーモン (Daemon) のプログラムを書くには? [perltips.twinkle.cc]

のまま使ってやっていまして、TTYにつないだまま(Daemon化しない)だと、フツーにいつまでも動いているのですけれども、Daemon化すると、数分でプロセスがいつの間にか消えているという現象。

だから今はscreenで開いたコンソール1つ使いDaemon化させないで運用。あほすぎる

Daemon化した時の効率のよいデバッグの仕方が見いだせないなあ。

投稿 大野 義貴 [Perl] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3104

コメント(2)

proc::daemon は stdout/stderr を /dev/null に捨ててしまいますが、これをログファイルに吐くようにすれば、デバッグも容易かとおもいます。

otsuneさんもブコメでかいてますけども、daemontools つかって daemon 自前でつくらないってのが許されるのであれば、それが一番楽かとおもいます。

トオルスガルモノノさん:

アドバイスをいただきまして、

      open STDERR, '>', '/tmp/stderr.log';
      open STDOUT, '>', '/tmp/stdout.log';

にて解決しました。あと、止まっていた理由が、daemon化した時にカレントディレクトリが/になるためでした。Daemon.pmのソース読むと、もろにカレントディレクトリ変えたり、STDOUT/STDERRを書き換えているところがありました。ソース見るべきでしたね。

daemontools利用のほうは、別の機会にチャレンジしてみたいと思います。

コメントする