实时重定向stdout和stderr

时间:2012-03-13 16:07:15

标签: ruby terminal command-line-interface freebsd csh

我认为这是一个简单的问题但无法找到解决方案。我将rubd脚本的stdout和stderr重定向到'puts',有时将错误(!)重定向到这样的日志文件中:

bundle exec rake import:long_task --trace  >& log/import.log &

但似乎没有实时将puts刷新到文件中,当它获得异常时,它会将回溯放在顶部import.log中。所以,这不是完美的调试,但它的工作原理。

如何将实时脚本的输出实时重定向到文件,以便在没有重定向的情况下直接在终端中启动它,看看我会看到的确切内容?

使用:Ruby 1.9.2,Rails 3.2,FreeBSD和csh shell。

2 个答案:

答案 0 :(得分:6)

STDOUT.sync = true如果您不想每次flush

答案 1 :(得分:0)

我不确定我是否完全理解你的问题,但你考虑过使用:

$stdout.puts "something on /dev/stdout"
$stdout.flush
$stderr.puts "something on /dev/stderr"
$stderr.flush

有关详细信息,请参阅IO#flush documentation