linux 在执行service 脚本启动服务的时候会查询/var/lock/subsys/下是否有与服务同名的空文件名,如果没有就不去执行,所以要按照服务器脚本编写的规范,启动的时候要在/var/lock/subsys/先touch一个与服务同名的空文件.同时也要调用/etc/rc.d/init.d/functions能够接受star与stop命令信号,具体可以参考/etc/rc3.d/vsftpd等文件:

在这里,我也定了一个可以用serivce来执行的脚本,如下 :

myservice

#!/bin/bash
# Source function library.
. /etc/rc.d/init.d/functions
RETVAL=0
uid=`id -u`
# it must be add empty file in /var/lock/subsys/
lockfile='/var/lock/subsys/myservice'
function myStart(){
#       local lockfile='/var/lock/subsys/myservice'
        [ -f $lockfile ] && rm -rf $lockfile || touch $lockfile
        echo -e "start myservice .."
        RETVAL=0
        exit 0 ;
}
function myStop(){
#       local lockfile='/var/lock/subsys/myservice'
        [ -f $lockfile ] && rm -rf $lockfile
        echo -e "stop myservice .."
        RETVAL=1
        exit 0 ;
}
case "$1" in
        start)
                [ $uid -eq 0 ] && myStart || exit 6
                ;;
        stop)
                [ $uid -eq 0 ] && myStop || exit 7
                ;;
        status)
                [ -f $lockfile ] && echo -e "myservice is running .." || exit 0
                ;;
        restart)
                [ $uid -eq 0 ] && myStart && myStop
                ;;
        *)
                echo -e "Usage: $0 {start|stop|restart|status}
"
                exit 1 ;
                ;;
esac



最后结果测试: 用service myservice start| stop | restart | status 都没有问题。

也在定义了开机自动运行服务:ln -s /etc/init.d/myservice /etc/rc3.d/S03myservice

没有问题,检测方法:

运行

[root@xxxxx /]# service myservice status

myservice is running ..

[root@xxxxx /]#



不过就是启动和停止服务的时候,没有 [ok] 变成绿色的提示,有待高手指教。


还有,用 chkconfig --add myservice 的时候,失败了。

提示: service myservice does not support chkconfig

暂时还没有弄明白是啥问题 。