【问题标题】:Ruby Daemons Gem红宝石守护程序宝石
【发布时间】:2010-12-18 01:15:15
【问题描述】:

我安装了 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 个空格)以使其更具可读性?

标签: ruby rubygems daemons


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    相关资源
    最近更新 更多