Mar*_*off 64
从Ruby脚本中,您可以重定向stdout并stderr与IO#reopen方法.
# a.rb
$stdout.reopen("out.txt", "w")
$stderr.reopen("err.txt", "w")
puts 'normal output'
warn 'something to stderr'
Run Code Online (Sandbox Code Playgroud)
$ ls a.rb $ ruby a.rb $ ls a.rb err.txt out.txt $ cat err.txt something to stderr $ cat out.txt normal output
arg*_*ith 13
注意:重新打开标准流到/ dev/null是一种帮助进程成为守护进程的好方法.例如:
# daemon.rb
$stdout.reopen("/dev/null", "w")
$stderr.reopen("/dev/null", "w")
Run Code Online (Sandbox Code Playgroud)
def silence_stdout
$stdout = File.new( '/dev/null', 'w' )
yield
ensure
$stdout = STDOUT
end
Run Code Online (Sandbox Code Playgroud)
./yourscript.rb 2>&1 > log.txt
Run Code Online (Sandbox Code Playgroud)
将stdout和stderr重定向到同一个文件.