こんばんは、最近は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
これで終わらないシミュレーションをリモートのサーバで走らせられますね!