Как перенаправить stderr и stdout в файл для сценария Ruby?
С в Ruby-скрипте вы можете перенаправить stdout и stderr с помощью метода IO#reopen.
stdout
stderr
IO#reopen
# 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 something to stderr $ cat out.txt normal output
Примечание: повторное открытие стандартных потоков в / 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 и stderr в один и тот же файл.