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
暂时还没有弄明白是啥问题 。
转载于:https://blog.51cto.com/plong/1388169