CentOS 6.6 中未找到守护进程函数

CentOS 6.6 中未找到守护进程函数

我正在尝试为某些服务设置 init.d 脚本 - 让它成为less 我的脚本:

#!/bin/bash -xv
# description: read service
#Source function library

if [ -x /etc/rc.d/init.d/functions ];then
. /etc/rc.d/init.d/functions
fi

RETVAL=0
LESS=/usr/bin/less
PIDFILE=/var/run/read.pid

start() {
echo -n $"Starting $LESS service: "
daemon /usr/bin/less
RETVAL=$?
echo $! > $PIDFILE; 
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/LESS
echo
return $RETVAL
}

stop() {
echo -n $"Shutdown $LESS service: "
killproc /usr/bin/less
rm -f $PIDFILE
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/LESS
echo
return $RETVAL
}

restart() {
echo -n $"Restarting $LESS service: "
killproc /usr/bin/less
daemon /usr/bin/less
}


case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
status)
    if [ `pidof /var/run/webreaderd.pid` ];then
        echo "Running"
    else
        echo "Not running"
    fi
    ;;
restart|reload)
    stop
    start
    ;;
*)
    echo $"Usage: $0 {start|stop|restart|reload|status}"
    exit 1
esac
exit $?

但在调试时/etc/init.d/read.sh start我得到了这个错误:line 15: daemon: command not found尽管我的 . /etc/rc.d/init.d/functions 存在并且它不为空。如何使我的daemon函数工作?

答案1

测试-x检查文件是否存在且是否可执行(或者在目录遍历/可搜索的情况下)。

您的函数文件可能没有执行权限。

事实上,它不需要有执行权限,因为你正在将它导入到当前脚本中。你可以不进行测试就将其包含进去

. /etc/rc.d/init.d/functions

或者如果存在则包括它

if [ -e /etc/rc.d/init.d/functions ];then
    . /etc/rc.d/init.d/functions
else
   echo "Some meaningful error message"
   exit 1
fi

如果它不存在并且您正在使用它所依赖的东西,您可能想要退出。

相关内容