我想制作一个Ruby守护进程,可以使用kill命令优雅地关闭。
我想添加一个信号陷阱,在关闭之前等待#可能需要一些时间运行的代码
完成。 我该如何将其添加到类似于以下内容的代码中:
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
会调用停止它的东西?非常感谢任何建议。
sleep
存在问题)。 - Theo