如何重定向 shell 的 debug 信息到 rsyslog

in #devlast month

今天在优化 steem 节点的管理脚本的时候新学到的。

#!/bin/bash

# redirect debug info to rsyslog
exec 5> >(logger -t aws_custom_func_debug)
BASH_XTRACEFD="5"
set -xe

解释:

  • logger -t aws_custom_func_debug [msg] 这个是在 /var/log/messages 中写入一条标记为 aws_custom_func_debug 的日志。以前一直都是用管道直接 echo msg >> /var/log/messages,这样做相当于是绕开了 rsyslog 的管理,导致日志信息不全。
  • exec 5> >... 的作用是把管道5重定向到某位置,注意两个 > 中间有一个空格
  • BASH_XTRACEFD="5"set -x 的信息输出到管道5