2017-08-25 147 views
0

我想写一个简单的cron作业的包装以下列方式延长本机的cron:在shell脚本中,如何在shell命令执行时回显标准输出(不是标准错误)?

  1. 它仅发送电子邮件时的作业打印的东西到标准错误或作业的返回码不为0
  2. 它将所有执行的命令(及其输出)记录到日志文件中。

这里是我的问题,我想在cron作业执行的命令记录到日志中(如上子弹#2),但/bin/bash -x job.sh(或set -xjob.sh)将触发警报的电子邮件(如上破子弹#1)。

回答

1

bash(1)手册页:

BASH_XTRACEFD

如果设定为相应于一个有效的文件描述符的整数, 庆典会写生成的跟踪输出时set -x启用 到文件描述符。当BASH_XTRACEFD未设置或分配新值时,文件描述符被关闭 。未设置 BASH_XTRACEFD或将其分配给空字符串会导致将跟踪 输出发送到标准错误。请注意,将 BASH_XTRACEFD设置为2(标准错误文件描述符),然后取消设置 将导致标准错误被关闭。

...

BASH_XTRACEFD=1 
set -x 
相关问题