如何才能做到这一点? 我知道这非常简单,并且包括将&
或&>
等附加到启动init脚本的实际命令。
但是,什么是最好的方法,以及如何确保init脚本自行分离,假设日志文件是/var/log/customDaemon.log?
这是我的初始化脚本。 我也不确定脚本中的方法是否整齐或只是一个讨厌的黑客。
#!/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
尝试这个:
/var/customDaemon >> /var/log/customDaemon.log 2>&1 &
我build议你应该使用普通用户而不是root
来运行服务。
要显示[OK] , [FAILED]消息,可以检查退出状态,如下所示:
/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
将/ dev / nullreplace为用于logging的文件名。
start() { echo "Starting customDaemon" /var/customDaemon > /var/log/customDaemon/console.log & return 0 }
我也改变了返回码,因为如果它能够启动,它应该返回0 – 成功。
init脚本的质量是好的。 没有太多讨厌的事情发生,你有LSB的function – 这是一件很好的事情。
有什么可以改进的是,如果应用程序支持redirect日志本身,所以你可以正确包装与旋转。
如果您检查守护程序是否成功启动,并且如果失败则抛出一个错误(并退出1)也会很好。