デーモン化
デーモン化してくれないプログラムをどうしてもデーモン化したくなったので、こんなスクリプトを書いた。
#!/usr/bin/ruby fork do Process.setsid() fork do Dir.chdir("/") STDIN.close() STDOUT.reopen("/dev/null","a") STDERR.reopen("/dev/null","a") exec(ARGV.join(" ")) end end
たとえばこれをrunasdaemon.rbというファイル名で保存したとしたら、
runasdaemon.rb デーモン化したいコマンド
みたいに起動する。
元のソースは結構短いから、ファイルに保存せずに無理矢理こんなことをすることもできる。
ruby -e 'fork{Process.setsid();fork{Dir.chdir("/");STDIN.close();STDOUT.reopen("/dev/null","a");STDERR.reopen("/dev/null","a");exec(ARGV.join(" "))}}' デーモン化したいコマンド
バグってたらすいません。