init.dスクリプト作りたいと思った。でもBashだと邪魔くさいいのでマイブームのRubyでやってみる.
スクリプトをDaemon化する rubygem Daemons
DaemonsはRubyのスクリプトを簡単にデーモンにすることができるツール.
仕組みはForkしてSetUIDで、かつThreadをあげてるっぽい。
使い方、メインのループを作る。メインループをDaemonのProcに入れる.
インストール
gem install daemons
使い方:
my_daemon.rbを起動ファイルとします
使い方2:外部スクリプト指定する場合.
バックグラウンド実行プロセスはProcではなく、既存のスクリプトをDaemon化する。
require 'rubygems' require 'daemons' Daemons.run("my_wathcer.pl --server=192.168.2.1")
別のスクリプトを指定するには、run を使う.引数にコマンドを取る.
簡単ですね。
start/stop/restart は要らない場合
start/stop コマンドは自分で作るから要らないよ!って場合には Daemons.callを使うみたいよ
require 'rubygems' require 'daemons' Daemons.call(){ loop{ sleep 1 } }
これでいつでも起動しっぱなしになる.
pid ファイルの場所を指定したい.
Daemon起動にいろいろとオプションをつけたい場合はハッシュでOptionsを与えればOK
options = { :dir_mode => :script, :dir => '/var/run', :multiple => true, :ontop => false, :mode => :exec, :backtrace => true, :monitor => true } Daemons.run_proc("my_daemon",options){ loop{ sleep 1 } }
オプションを与えることで、pid ファイルの場所を指定できる