bash在日志中需要STDOUT + STDERR,而STDERR在其正常目的地需要

时间:2012-03-29 17:49:39

标签: bash shell stdout logging stderr

这是一个cron作业,输出到STDERR会产生错误的电子邮件通知,这是我需要的。但是,错误可能是非致命的,因此我还需要使用STDOUT包含在日志中的STDERR输出。怎么样?

2 个答案:

答案 0 :(得分:1)

好的,我花了几分钟时间研究如何使用标准的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。

我还不知道为什么在接近结尾时必须{​​{1}},但没有它就行不通。

答案 1 :(得分:0)

以下命令适用于较少的字符:

((./your-script 3>&1 1>&2 2>&3- | tee /dev/fd/2) 3>&1 1>&2 2>&3- ) | cat > logfile