【问题标题】:How to send script output to syslog如何将脚本输出发送到 syslog
【发布时间】:2017-09-03 22:06:02
【问题描述】:

我想更改当前将其输出写入日志文件的脚本。

 ~/bin/setBatteryProtect.sh >> /tmp/battery.log

我想让输出发送到系统日志。这样做的最佳选择是什么。最可靠的版本似乎是使用logger。我实际上想避免更改脚本 - 所以我正在寻找一个将完整输出发送到 syslog 的选项。这可能吗?

【问题讨论】:

    标签: bash 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您的回答添加解释并说明适用的限制和假设。
    猜你喜欢
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    相关资源
    最近更新 更多