Ruby Daemons Gem

时间:2009-11-18 20:41:44

标签: ruby rubygems daemons

我安装了ruby gem Daemons。为了确保它正常工作,我创建了一个每5秒打印到一个文件的脚本。然后,我创建了另一个文件,使用他们在位于http://daemons.rubyforge.org/的自述文件中提供的简单示例来运行脚本。我需要rubygems和守护进程。然后我输入'ruby mycontrol.rb start'。他们使用的示例有一些消息说“(myserver.rb现在正在后台运行)”,我没有看到,但我没有收到任何错误。如果我执行'ps -u myusername',我会看到要守护进程的字段列在进程中,但似乎没有运行,因为没有任何内容写入文件。

这是我的来源:

# this is mycontrol.rb

require 'rubygems'
require 'daemons'

Daemons.run(daemon.rb)

和...

# this is daemon.rb

loop do 
 open('file.out', 'w') do |f|
  f.puts 'hello everybody'
 end
 sleep(3)
end

我做的任何事情都是你错的?

谢谢, 贝

1 个答案:

答案 0 :(得分:4)

我已经尝试过你的例子,它适用于我(Linux上的Ruby 1.8.6和Daemons版本1.0.10)。但是,您可能会遇到以下问题:

  • 我发现守护进程(daemon.rb)是以/的当前工作目录启动的。运行mycontrol.rb或包含daemon.rb的目录时,这不是当前目录。以非root用户身份运行意味着我的进程没有写入文件的权限。我将文件名更改为/tmp/file.out,文件是使用预期内容创建的。

  • 您正在以只写(file.out)模式打开'w'。这意味着它将被截断并每3秒重写一次。如果以附加('a')模式打开文件,您将看到每隔3秒向该文件写一条额外的hello everybody行。

我也没有看到“现在正在后台运行”消息。我认为这包含在文档中以说明应该发生什么,而不是指示输出。