我将以下代码放在我正在使用的许多脚本之上......
#!/bin/bash
# redirect all error messages to the protocol,
# then print the same message to stdout
exec 1> >(logger -i -s -t $0 -p 4) 2>&1
这行代码将使运行我的脚本时发生的错误的协议(protocol)条目。
但是当通过 stdin
和 stdout
进行通信时,此代码无法正常工作。我只想记录错误消息。
老实说,我不知道我是如何设法让这行代码工作的。
尽管如此,我正在寻找一个代码来替换 exec
和 logger
的组合 但我不知道如何以这种方式捕获/接收错误消息。function
放入 trap "createErrorMessage"ERR
。
我的目标是仅创建所有错误消息的协议(protocol)条目。
要明确一点,我不想在每段代码后使用 $?
并且我不想用 Variable=$()< 捕获每段代码
.
这可能吗?
最佳答案
当 logger
将输出发送到 syslog
时,systemd-cat
为 systemd
执行相同类型的功能。参见示例:
echo "hello" | systemd-cat
journalctl | tail -10
如果您将脚本作为 systemd 服务单元运行,则无需使用 systemd-cat
:默认情况下 systemd
将发送其控制的服务的 STDOUT 和 STDERR期刊。
有关该工具的更多信息,请参见 man systemd-cat
。
关于linux - 捕获错误消息并创建日记条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43262255/