Ruby 如何使用守护进程gem获取第一个任务的pid?
我正在尝试使用守护进程gem运行同一代码/脚本的多个实例。我在IRB会议上一直在玩它,似乎无法获得我想要的功能。我希望多次运行同一个脚本,跟踪PID,以便手动启动和停止进程。更具体地说,我有一个rails模型,它的实例将控制一个进程,因此我需要使用Ruby 如何使用守护进程gem获取第一个任务的pid?,ruby,fork,pid,multiple-instances,daemons,Ruby,Fork,Pid,Multiple Instances,Daemons,我正在尝试使用守护进程gem运行同一代码/脚本的多个实例。我在IRB会议上一直在玩它,似乎无法获得我想要的功能。我希望多次运行同一个脚本,跟踪PID,以便手动启动和停止进程。更具体地说,我有一个rails模型,它的实例将控制一个进程,因此我需要使用 mydaemon = MyDaemon.create mydaemon.start # starts the process mydaemon.stop # stops the process 然而,为了实现这样的目标,我想将进程的PID存储在活
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),并返回与task1关联的守护进程::应用程序对象,而不是返回pid。我只有在启动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
谢谢,
Tomek一个
Daemons::Application
对象有一个公共属性pid
,它返回一个对象,所以尝试使用task1.pid.pid
这个Daemons::Application
对象有一个公共属性pid
,它返回一个对象,因此,请尝试使用task1.pid.pid
我不希望Daemoning代码在irb
中运行良好。我建议改为通过脚本进行测试。@sarnold看起来运行脚本会产生相同的结果,我不希望Daemoning代码在irb
中很好地发挥作用。我建议改为通过脚本进行测试。@sarnold看起来运行脚本会产生与运行task1.pid.pid相同的结果,运行task1.pid.pid会返回nil,正如我在上面的注释中所看到的那样。运行task1.pid.pid会返回nil。