簡易デーモン化スクリプト

#!/usr/bin/env ruby
require 'optparse'

def run_as_daemon
  fork {
    Process.setsid
    Dir.chdir('/')
    trap(:INT)  { exit! 0 }
    trap(:TERM) { exit! 0 }
    trap(:HUP)  { exit! 0 }
    open('/dev/null', 'r+') {|f|
      [$stdin, $stdout, $stderr].each {|io| io.reopen f }
    }
    yield
  }
end

interval = 2
opt = OptionParser.new
opt.on('-n [INTERVAL]') {|v| interval = v.to_i }
opt.parse!(ARGV)

run_as_daemon {
  loop {
    system(*ARGV)
    sleep interval
  }
}

exit! 0

↓な感じで使う。


./d.rb "ps | wc -l >> logfile"

似たようなコマンドってないのかなー。