记录过程输出

时间:2011-10-07 12:08:16

标签: ruby ruby-on-rails-3 logging process

我使用方法system来启动流程。该进程的pid存储在文件worker.pid

但是我需要生成此过程的日志,如何存储此过程的输出?

使用此命令创建进程:

system "bundle exec rake resque:work >> ./resque.log QUEUE=* PIDFILE=#{pid_file} &"

P.S。:我正在使用ruby 1.8,BACKGROUND = yes won'tt work。 P.S.2:平台linux

2 个答案:

答案 0 :(得分:1)

也许您正在寻找的是IO.popen

这使您可以分离子进程并通过IO对象访问它的输出

# fork off a one-off task
# and return the output as a string
ls = IO.popen("ls")
ls.read

# or return an array of lines
IO.popen("ls").readlines

# or create a continuing task
tail = IO.popen("tail -f /some/log/file.log")
loop do
  puts tail.gets
end

我建议你阅读文档, 但你也可以写信给流,并做各种聪明的事情。

答案 1 :(得分:0)

如果我理解你想要正确实现的目标,那么你正在寻找Open3课程。 http://www.ruby-doc.org/stdlib-1.8.7/libdoc/open3/rdoc/Open3.html