【发布时间】:2011-08-13 04:57:57
【问题描述】:
我想制作一个 ruby 守护程序,它可以使用 kill 命令优雅地关闭。
我想添加一个信号陷阱,它会等到#code that could take some time to run 完成后再关闭。我如何将其添加到这样的内容中:
pid = fork do
pid_file = "/tmp/pids/daemon6.pid"
File.open(pid, 'w'){ |f| f.write(Process.pid) }
loop do
begin
#code that could take some time to run
rescue Exception => e
Notifier.deliver_daemon_rescued_notification(e)
end
sleep(10)
end
end
Process.detach pid
另外,将它放在单独的脚本中会更好吗,例如单独的 kill 脚本,而不是将其作为守护程序代码的一部分?就像monit 或God 会打电话阻止它?
感谢任何建议。
【问题讨论】: