如何将 stderr 附加到 init.d 脚本中的 log_failure_msg

如何将 stderr 附加到 init.d 脚本中的 log_failure_msg

据我所知,在 /lib/lsb/init.functions 中,log_failure_msg是将失败消息输出到某个日志文件的正确方法。我想知道是否可以这样做。

python some/script/here.py 2>> log_failure_msg

log_failure_msg 通常像这样使用log_failure_msg "some failure message"

我怀疑这不会像我希望的那样工作,因为 stderr 是传递给 log_failure_msg 的消息。我会测试一下,但我也不确定这个新创建的日志文件放在哪里。如果有人能帮助或提供如何使用 log_failure_msg 记录我的错误的替代方法,我将不胜感激。

还有一件事。在我的 python 行之后,我有retval=$?。我需要这行紧跟在我的 python 命令之后,这样我才能捕获返回代码。由于这个原因,我想不出任何方法来获取 stderr 并将其分配给可以传递给 log_failur_msg 的变量。

谢谢

答案1

如果你检查一下log_failure_msg, 它说:

log_failure_msg message

    The log_failure_msg function shall cause the system to write a failure
    message to an unspecified log file. The format of the message is
    unspecified.The log_failure_msg function may also write a message to the
    standard output.

    Note: The message should be relatively short; no more than 60 characters
    is highly desirable.

因此看起来该函数只能写入standard outputnot standard error。这样 a2> somewhere就不起作用了。

另一方面,如果你想要一个 Python 脚本来写入stderr,那么邮政会告诉你如何操作log_failure_msgShell 脚本其典型来源如下:

#!/bin/bash

source /lib/lsb/init-functions
log_failure_msg "some error" 

结合 Python 和 Shell 错误报告似乎不是一个好主意。

相关内容