Ruby 守护进程软停止

标签 ruby daemons

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

相关文章:

ruby - 从字符串中去除括号的结尾集

ruby - Ruby脚本无法打开SQLite3文件,只有在作为守护程序运行时才能打开

Ruby 守护进程日志轮换

Ruby:Twitter API:获取所有关注者

ruby-on-rails - Rails on Rails 将其提升到一个新的水平

ruby - 数字填充作为字符串消息的一部分

ruby - 花见 : access current page URL from views or templates

python - 在python中连接两个守护进程

macos - 如何创建始终在后台运行并收集位置的Mac应用程序?

linux - Linux 中的远程进程控制