0

我有一个脚本(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>

如何才能做到这一点?

4

2 回答 2

0

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

于 2017-04-05T06:01:48.593 回答
0

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

$ 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
于 2018-04-25T19:31:25.963 回答