您的位置:首页 > 运维架构 > Linux

自定义简单的service脚本

2014-04-01 11:52 204 查看
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
暂时还没有弄明白是啥问题 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息