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 ファイルの場所を指定できる