1
私は神を使って監視しているクラスがあります。これは、構造体の次のとおりです。デーモン化されていないプロセスを神で終わらせる適切な方法は何ですか?
のlib/my_class.rb
#!/usr/bin/env ruby
class MyClass
def start(config)
loop do
EventMachine::run do
end
end
end
begin
config = {"foo" => "bar"}
my_class = MyClass.new
my_class.start(config)
rescue Exception => ex
puts "Exception in MyClass: #{ex.message} at #{ex.backtrace.join("\n")}"
end
そして、これは私が神とそれを実行している方法です:
のconfig/my_config.god
rails_root = File.dirname(File.dirname(__FILE__))
God.pid_file_directory = File.join(rails_root, 'tmp/pids/')
# myclass
God.watch do |w|
w.name = "myclass"
w.interval = 30.seconds
w.start = "#{rails_root}/script/rails runner #{rails_root}/lib/my_class.rb"
# w.stop = "do nothing?"
# w.restart = "#{w.stop} && #{w.start}"
w.start_grace = 10.seconds
w.restart_grace = 10.seconds
w.log = "#{rails_root}/log/my_class.log"
w.start_if do |start|
start.condition(:process_running) do |c|
c.interval = 5.seconds
c.running = false
end
end
end
私はストップを指定しなかったので(私にはわからない)、神はSIGTERM
を送信し、その後SIGKILL
を送信して失敗した場合、プロセスを停止します。これは私がデーモン化されていないプロセスを処理するはずですか?
* "これはプログラミングフォーラムです。私たちはここで宗教的な議論を避ける傾向があります=) –
haha、私はタイトルをつけて考えました。神はデーモン化し、プロセスを殺害したのですか?^_ ^ – David