【发布时间】:2012-03-29 17:49:38
【问题描述】:
这是一项 cron 作业,STDERR 的输出会导致我需要的错误电子邮件通知。但是,错误可能不是致命的,所以我还需要包含在带有 STDOUT 的日志中的 STDERR 输出。怎么样?
【问题讨论】:
-
这个问题每月 1-2 次。你没有找到任何有用的东西吗?祝你好运。
标签: bash shell stdout logging stderr
这是一项 cron 作业,STDERR 的输出会导致我需要的错误电子邮件通知。但是,错误可能不是致命的,所以我还需要包含在带有 STDOUT 的日志中的 STDERR 输出。怎么样?
【问题讨论】:
标签: bash shell stdout logging stderr
好的,我花了几分钟研究如何仅使用标准的 shell 命令行来执行此操作。
为荒谬的命令行做好准备。
((./your-script 3>&1 1>&2 2>&3 3>&- | tee /dev/fd/2) 3>&1 1>&2 2>&3 3>&- ) |
cat >logfile
关于这种可憎的东西,我唯一能说的就是它有效……而且我找不到任何更简单也有效的东西。哦,而且,它不需要bash 或任何东西。它可以在标准的 bourne shell 中运行。
我不知道为什么在结尾处必须有| cat,但没有它就行不通。
【讨论】:
cat 会更改行缓冲模式,因此您会更快(也许)看到输出,但我希望它最终都一样。
以下命令适用于较少的字符:
((./your-script 3>&1 1>&2 2>&3- | tee /dev/fd/2) 3>&1 1>&2 2>&3- ) | cat > logfile
【讨论】: