如何将stdout和stderr保存或者重定向到其他文件?

时间:2020-01-09 10:43:32  来源:igfitidea点击:

问题:如何运行一个名为oraMon.pl的程序。
但是,此程序是从cron作业运行的。
它向stderr报告错误,向stdout报告正常输出。
如何将stdout和stderr都保存到3个单独的日志文件中?

解决方法:
如果您知道如何重定向stderr,stdout和名为tee的小命令,这并不难。

  • fd0是stdin
  • fd1是stdout
  • fd2是stderr

重定向标准输出和标准错误有两种格式:&> word>&word

例如,任何写到fd2的东西都和输出到fd1的地方一样,您将使用:2>&1

tee命令从标准输入读取并写入标准输出和文件。

因此,要将stderr发送到/tmp/errors.log,将stdout发送到/tmp/output.log并将它们都发送到/tmp/final.log,请执行以下内容:

((/path/to/oraMon.pl 2>&1 1>&3 | tee /tmp/errors.log) 3>&1 1>&2 | tee /tmp/output.log) > /tmp/final.log 2>&1