【问题标题】:Ruby daemons soft stopRuby 守护进程软停止
【发布时间】:2012-08-29 07:11:37
【问题描述】:

这个简单的守护进程(使用 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 个数字?

【问题讨论】:

    标签: ruby daemons


    【解决方案1】:

    您需要捕获调用 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
    

    【讨论】:

      猜你喜欢
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多