【问题标题】:How get daemons' status programmatically using Ruby gem "daemons"如何使用 Ruby gem“守护进程”以编程方式获取守护进程的状态
【发布时间】:2018-04-26 03:31:25
【问题描述】:

我有一个脚本(myscript.rb),如下所示:

require 'daemons'

Daemons.run_proc 'myproc', dir_mode: :normal, dir: '/path/to/pids' do
  # Daemon code here...
end

所以,我可以通过ruby myscript.rb status 在控制台中检查守护进程的状态。

但我需要在网页(Rails)中显示守护进程的状态,例如:

<p>Daemon status: <%= "Daemon status here..." </p>

如何做到这一点?

【问题讨论】:

    标签: ruby-daemons


    【解决方案1】:

    执行此操作的默认方法实际上是从 Rails 应用程序调用 ruby myscript.rb status 并解析其输出以获得所需的信息。 或者,您也可以自己创建一个Application 对象并在其上调用#running?

    【讨论】:

      【解决方案2】:

      在我的测试中,当守护程序未运行时,“状态”命令似乎以非零值退出:

      $ ruby myscript.rb status; echo $?
      myproc: no instances running
      3
      $ ruby myscript.rb start
      myproc: process with pid 21052 started.
      $ ruby myscript.rb status; echo $?
      myproc: running [pid 21052]
      0
      $ ruby myscript.rb stop
      myproc: trying to stop process with pid 21052...
      myproc: process with pid 21052 successfully stopped.
      $ ruby myscript.rb status; echo $?
      myproc: no instances running
      3
      

      因此可以通过编程方式检查守护进程的状态,如下所示:

      require 'open3'
      
      stdin, stdout, stderr, wait_thr = Open3.popen3('ruby', 'myscript.rb', 'status')
      if wait_thr.value.to_i == 0
        puts "Running"
      else
        puts "Not running"
      end
      

      【讨论】:

        猜你喜欢
        • 2023-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多