【发布时间】:2021-09-08 14:09:30
【问题描述】:
我需要将 stdout 重定向到控制台,并将 stdout 和 stderr 重定向到文件。这需要在 shell 脚本中完成。 我发现下面的代码可以同时重定向到控制台和日志文件,现在我需要将 stderr 删除到控制台。
exec > >(tee -i "output.log") 2>&1
你能帮帮我吗?
【问题讨论】:
-
作为一个额外的复杂因素,请记住 stdout 通常是缓冲的,而 stderr 通常不是。将两者都重定向到一个公共日志可能会导致它们被写出实际的时间顺序。解决这个问题的一种方法是取消缓冲两者,例如将两者都路由到 stderr,但这会使您的解决方案更加复杂。为什么您不希望 stderr 也进入控制台?这对我来说似乎违反直觉。
-
是的,我就是这么想的。尤其是多线程,它可能会在其他任务完成之前发现错误并开始生成报告。