僕たちが待ち望んでいたRubyスクリプトをデーモン化する方法
Rubyでは、簡単にデーモンが記述できる。その方法は簡単!Ruby 1.9だと
Process.daemon
と書くだけだ。その行の後は制御端末が切離され、デーモンとして実行される。Ctrl+Cで終了できないので、永遠に実行を続けるスクリプトは「pkill -f」などで殺す。
既存のスクリプトをデーモン化するには、この一行を加えればいいだけなのだが、常にデーモンにしてしまうとデバッグが困難になってしまう。そこで、テスト時はふつうに実行して、普段はデーモンにしてしまえばいい。その方法もまた簡単!上の一行を daemonize.rb というファイルに保存すればいい。だけどこれだけだとつまらないので、ついでにRuby 1.8にも対応させてみる。
if Process.respond_to? :daemon # Ruby 1.9 Process.daemon else # Ruby 1.8 require 'webrick' WEBrick::Daemon.start end
こうすることで
$ ruby -rdaemonize /path/to/script