这个简单的守护进程(使用 ruby daemons gem 编写)打印从 0 到 9 的数字,直到我使用 stop
命令行选项停止守护进程:
require 'rubygems'
require 'daemons'
options = {
:multiple => false,
:ontop => false,
:backtrace => true,
:log_output => true,
:monitor => false
}
Daemons.run_proc('test.rb', options) do
loop do
10.times do |i|
puts "#{i}\n"
sleep(1)
end
end
end
我启动守护进程
ruby simple_daemon.rb start
并停止它
ruby simple_daemon.rb stop
是否可以轻柔地停止守护进程,让它在终止其进程之前结束最后一个循环,以便我确定它最后一次打印所有 10 个数字?
最佳答案
您需要捕获调用 stop 时发送的 TERM 信号并自行处理。您的代码可能是这样的:
Daemons.run_proc('test.rb', options) do
stopped = false
Signal.trap("TERM") do
stopped = true
end
while not stopped
10.times do |i|
puts "#{i}\n"
sleep(1)
end
end
end
关于Ruby 守护进程软停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12266645/