2009-11-18 191 views
1

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

这里是我的源:

​​

和...

# this is daemon.rb 

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

做任何事情我做跳出你为错了吗?

感谢, 托尼

+0

请您可以重新格式化您的代码(缩进4个空格),使其更具可读性? – 2009-11-18 22:22:28

回答

4

我试过你的榜样,它为我的作品(红宝石1.8.6 Linux上,守护程序版本1.0.10)。但是,您可能会遇到以下问题:

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

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

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