如何将脚本输出发送到 syslog
Posted
技术标签:
【中文标题】如何将脚本输出发送到 syslog【英文标题】:How to send script output to syslog 【发布时间】:2017-09-03 22:06:02 【问题描述】:我想更改当前将其输出写入日志文件的脚本。
~/bin/setBatteryProtect.sh >> /tmp/battery.log
我想让输出发送到系统日志。这样做的最佳选择是什么。最可靠的版本似乎是使用logger
。我实际上想避免更改脚本 - 所以我正在寻找一个将完整输出发送到 syslog 的选项。这可能吗?
【问题讨论】:
【参考方案1】:logger
如果没有在命令行上指定消息并且没有使用-f
(从文件读取),则从标准输入读取。
utility | logger
将使用 logger 记录到 syslog,utility
的每行输出有一个日志条目。
添加-t tag
为日志添加标签。没有它,执行logger
的用户的用户名将被用作标签。
【讨论】:
感谢这在命令行上运行良好,但从 cron 开始,我在 syslog 中没有任何条目,也没有任何其他(可见的)错误。使用 cron 时是否需要考虑其他选项? @MBushveld 嗯..这很奇怪。我不明白为什么那行不通。 当我将这个“/home/mi01/bin/setBatteryProtect.sh 2>&1 | logger -t setBattery”直接放在 crontab 中时,它会按预期工作。但是当我把它放在一个文件中并将它放在 /etc/cron.daily/ 中时,不会写入任何 autput。由于 crontab 启动了 anacron,它遍历文件并运行它们,我认为问题存在于某处。任何提示如何获得更好的信息甚至解决方案?【参考方案2】:把它放在脚本的顶部?我在另一个网站上找到了它
exec 1> >(logger -s -t $(basename $0)) 2>&1
来源:“https://www.urbanautomaton.com/blog/2014/09/09/redirecting-bash-script-output-to-syslog/”
【讨论】:
欢迎来到 Stack Overflow!虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因确实有助于提高帖子的质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。以上是关于如何将脚本输出发送到 syslog的主要内容,如果未能解决你的问题,请参考以下文章
使用 Groovy 或 Java 将日志发送到 Syslog 服务器