用于logging脚本输出的init脚本

如何才能做到这一点? 我知道这非常简单,并且包括将&&>等附加到启动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中的预定义函数: daemonkillprocaction ,…

 /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)也会很好。