我如何捕获每个“set -x”日志到syslog?

时间:2012-08-23 03:05:05

标签: bash syslog

场景是

我有一个shell脚本,它运行一些带有不同参数和选项的复杂命令。

这些参数和选项由第三方应用程序传递,这样我可能无法确切知道每次传递给shell脚本的参数和选项

因此,为了知道这一点,我在shell脚本的开头使用set -x来查看命令运行的确切内容。我想使用logger将那些调试器消息从set -x移动到syslog。

我使用陷阱来做

trap "logger $(BASH_COMMAND)" DEBUG

然而,syslog的输出没有正在运行的确切命令但是......就像那样......

apple=1
orange=2
command $apple $orange

.............................

但是我希望日志的输出应该是

command 1 2 

我怎样才能实现?

1 个答案:

答案 0 :(得分:6)

这是一种方式:

#!/bin/bash

apple=1
orange=2
set -x

exec 2> >(logger)
echo $apple $orange

我们将stderr(设置-x路由到stderr,文件描述符2)重定向到记录器程序。

在我的/ var / log / messages中我得到:

Aug 23 08:16:07 yogi logger: + echo 1 2