如何将stderr和stdoutredirect到一个Ruby脚本文件?
如何将stderr和stdoutredirect到一个Ruby脚本文件?
在Ruby脚本中 ,可以使用IO#reopen
方法redirectstdout
和stderr
。
# a.rb $stdout.reopen("out.txt", "w") $stderr.reopen("err.txt", "w") puts 'normal output' warn 'something to stderr'
$ ls a.rb $ ruby a.rb $ ls a.rb err.txt out.txt $ cat err.txt 有一些情况 $ cat out.txt 正常输出
注意:将标准stream重新打开到/ dev / null是帮助进程成为守护进程的一种很好的旧方法。 例如:
# daemon.rb $stdout.reopen("/dev/null", "w") $stderr.reopen("/dev/null", "w")
def silence_stdout $stdout = File.new( '/dev/null', 'w' ) yield ensure $stdout = STDOUT end
./yourscript.rb 2>&1 > log.txt
会将stdout和stderrredirect到同一个文件。