如何做到这一点?我知道这很简单,只需将类似&
或 的内容附加&>
到启动 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/functions
:daemon
,,,...killproc
action
/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),这也将是很好的。