1

我安装了 ruby​​ gem 守护进程。为了确保它正常工作,我创建了一个脚本,该脚本每 5 秒打印一次文件。然后,我使用他们在位于http://daemons.rubyforge.org/的自述文件中为您提供的简单示例创建了另一个文件来运行脚本。我需要 ruby​​gems 和守护进程。然后我输入“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

我正在做的任何事情都会对你说错了吗?

谢谢,托尼

4

1 回答 1

4

我已经尝试了您的示例,它对我有用(Linux 上的 Ruby 1.8.6 和守护进程版本 1.0.10)。但是,您可能会遇到以下问题:

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

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

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

于 2009-11-18T22:32:50.850 回答