以下の内容はhttps://blog.nishimu.land/entry/20090518/1242659335より取得しました。


デーモン化するプロセス

こんばんは、最近はTyphoeusとかSinatraで遊んでいます。

Lingrがサービスを終了してしまったので、最低限勉強会でログが残るチャットをするためにと、Cometを勉強してChatを書いているのですが、それのテスト用にデーモンを作りたかったので調べました。
この方法をなぜ卒論書いているときに見つけられなかったのかがとても悔やまれるくらい簡単です。

exit if fork
Process.setsid
exit if fork
# your application code

2回forkしているのはforkしたプロセスは親の属する端末デバイスを引き継いでしまう可能性があるための対策らしいです。

デーモン化させたあとのPIDをファイルに書き出しておくとRakeを使って殺せたりできるので便利です。

# your app
File.open('pid', 'w') {|io| io.write $$ }

# Rakefile
namespace :app_name do
  task :start do
    sh 'your_app'
  end

  task :stop do
    pisd = File.open('pid').read.chomp.to_i
    Process.kill :KILL, pid
  end
end

これで終わらないシミュレーションをリモートのサーバで走らせられますね!


参考: Ruby: daemon (Japanese)




以上の内容はhttps://blog.nishimu.land/entry/20090518/1242659335より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14