2

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 の 2 番目のインスタンスを開始する場合にのみ、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 を取得する方法はありませんか?

ありがとう、トメック

4

1 に答える 1

0

ドキュメントによると、オブジェクトにはDaemons::Pidオブジェクトを返すDaemons::Applicationpublic 属性があるため、それを使用してみてください。pidtask1.pid.pid

于 2012-06-21T23:39:39.830 に答える