« マシン語を学ぶ子ども達 | メイン | symfonyでgettext »

daemonsで簡単デーモン
このエントリーをブックマークに追加 このエントリーをlivedoorクリップに追加

komagataです。

mongrelを入れるときに一緒に入るdaemonsというライブラリが気になったので調べてみました。

daemonsは大まかに、サーバープログラムをstart/stop/restartなどのおなじみのやり方で操作できるようにするラッパーの機能とプログラム中で使って自分のプロセスをデーモンにする機能があるそうです。

引数を出力し続けるプログラムをデーモンにしてみたいと思います。

puts_arg.rb:

#!/usr/bin/env ruby
 
loop do
  puts ARGV.inspect
  sleep(1)
end

実行結果。

$ ruby puts_arg.rb a b c
["a", "b", "c"]
["a", "b", "c"]
["a", "b", "c"]
(略)

これにdaemonsを使ってラッパーを用意します。

puts_arg_control.rb:

#!/usr/bin/env ruby
 
require 'rubygems'
require 'daemons'
 
Daemons.run('puts_arg.rb')

これでputs_arg.rbにたいしてstart/stop/restart/runなどの操作ができるようになります。(runは非デーモンの状態で動かします)

引数は下記のように'--'の後に渡せば管理対象のプログラムへの引数になります。

$ ./puts_arg_control.rb run -- a b c
["a", "b", "c"]
["a", "b", "c"]
["a", "b", "c"]
(略)

restartやstopのためにデフォルトではプログラムのあるディレクトリにpidファイルが作成されます。(この場所もDaemons.runメソッドのオプションで細かく設定できます)

自分自身をデーモン化する方法はdemonizeを実行するだけです。

#!/usr/bin/env ruby
require 'daemonize'
include Daemonize

daemonize()

loop do
puts ARGV.inspect
sleep(1)
end

やっている内容はこちらで説明されているのとほとんど変わりません。

以前書いたdRubyのサーバーもdaemonsで簡単にデーモン化できました。Rubyでちょこっとサーバーを書くときにお勧めです。

トラックバック

このエントリーのトラックバックURL:
http://www.unoh.net/mt32/mt-tb.cgi/989

この一覧は、次のエントリーを参照しています: daemonsで簡単デーモン:

» デーモンまとめさいと from デーモン適当サイト集
デーモンのリンク集形式のサイト情報です。の情報収集にお役立てください。 [詳しくはこちら]

コメントを投稿


画像の中に見える文字を入力してください。

  [PR] 転職
ウノウラボはウノウ株式会社のエンジニア/デザイナーによる大小のアウトプットを行っていく場です。

現在ウノウは絶賛人材募集中です。詳細は求人ページへ。

About

2007年10月24日 10:29に投稿されたエントリーのページです。

ひとつ前の投稿は「マシン語を学ぶ子ども達」です。

次の投稿は「symfonyでgettext」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

ウノウサービス