记录脚本输出的初始化脚本

记录脚本输出的初始化脚本

如何做到这一点?我知道这很简单,只需将类似&或 的内容附加&>到启动 init 脚本的实际命令中即可。

但是,最好的方法是什么以及如何确保初始化脚本自行分离,假设日志文件是 /var/log/customDaemon.log ?

这是我拥有的 init 脚本。我也不确定脚本中的方法是否巧妙,还是只是一种卑鄙的黑客手段。

#!/bin/bash
#
# /etc/rc.d/init.d/customDaemon
#
# description: "The Daemon"
# processname: customDaemon
# pidfile: "/var/run/customDaemon.pid"

# Source function library.
. /etc/rc.d/init.d/functions

start() {
    echo "Starting customDaemon"
    /var/customDaemon &> /dev/null &
    return 1
}

stop() {
    echo "Stopping tweriod"
    prockill customDaemon   
    return 2
}

case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        stop
        start
    ;;
    reload)
        restart
    ;;
    status)
        status customDaemon
    ;;
    *)
        echo "Usage: customDaemon [start|stop|restart|status]"
        exit 1
    ;;
esac

答案1

尝试这个:

/var/customDaemon >> /var/log/customDaemon.log 2>&1 &

我建议您应该以普通用户身份运行该服务,而不是root

为了展示[ 好的 ][ 失败的 ]消息,您可以检查退出状态,如下所示:

/var/customDaemon >> /var/log/customDaemon.log 2>&1 &
RETVAL=$?
[ $RETVAL = 0 ] && echo -ne '\t\t\t\t\t[  \033[32mOK\033[0m  ]\n'

您还可以查看预定义函数/etc/rc.d/init.d/functionsdaemon,,,...killprocaction

/var/customDaemon >> /var/log/customDaemon.log 2>&1 &
RETVAL=$?
[ $RETVAL = 0 ] && action $"Starting customDaemon... " /bin/true

答案2

用用于日志记录的文件名替换 /dev/null。

start() {
    echo "Starting customDaemon"
    /var/customDaemon > /var/log/customDaemon/console.log &
    return 0
}

我还改变了返回代码,因为如果它能够启动,它应该返回 0(表示成功)。

初始化脚本的质量还不错。没有太多令人讨厌的事情发生,而且你还有 lsb 函数 - 这是一件非常好的事情。

可以改进的是,如果应用程序支持日志本身的重定向,那么您可以使用 logrotation 正确地包装内容。

如果您检查守护进程是否成功启动,如果失败则抛出错误(并退出 1),这也将是很好的。

相关内容