我正在尝试使用 Daemons gem 运行相同代码/脚本的多个实例。我一直在 IRB 会话中使用它,但似乎无法获得我正在寻找的功能。我想多次运行相同的脚本来跟踪 PID,以便我可以手动启动和停止进程。更具体地说,我有一个 rails 模型,它的实例将控制一个进程,所以我需要使用类似的东西来启动和停止它
mydaemon = MyDaemon.create
mydaemon.start # starts the process
mydaemon.stop # stops the process
但是,为了实现这样的目标,我想将进程的 PID 存储在活动记录中。当我在 IRB 中运行以下代码时:
require 'rubygems' # if you use RubyGems
require 'daemons'
task1 = Daemons.call(:multiple => true) do
loop {
File.open("/tmp/daemon_test.log", "w") {|f| f.write(Time.now.to_s + "\n")}
sleep 5
}
end
该任务会自动启动(无需在 task1 上调用 start),它不会返回 pid,而是返回与 task1 关联的 Daemons::Application 对象。我只有在启动 task1 的第二个实例时才能访问 pid,即:
task1.start
=> 574 # PID of process but now I have 2 proc's running, one of which I don't know the PID of
我使用守护进程错了吗?还是没有办法获得调用 Daemons.call 时自动启动的第一个进程的 PID?
谢谢,托梅克