1、编写服务脚本/root/bin/testsrv.sh,完成如下要求
1、编写服务脚本/root/bin/testsrv.sh,完成如下要求
(1) 脚本可接受参数: start, stop, restart, status
(2) 如果参数非此四者之一,提示使用格式后报错退出
(3) 如是start:则创建/var/lock/subsys/SCRIPT_NAME, 并显示“启动成功”
考虑:如果事先已经启动过一次,该如何处理?
(4) 如是stop:则删除/var/lock/subsys/SCRIPT_NAME, 并显示“停止完成”
考虑:如果事先已然停止过了,该如何处理?
(5) 如是restart,则先stop, 再start
考虑:如果本来没有start,如何处理?
(6) 如是status, 则如果/var/lock/subsys/SCRIPT_NAME文件存在,则显示
“ SCRIPT_NAMEis running...”
如果/var/lock/subsys/SCRIPT_NAME文件不存在,则显示“ SCRIPT_NAMEis stopped...”
其中: SCRIPT_NAME为当前脚本名
(7)在所有模式下禁止启动该服务,可用chkconfig 和 service命令管理
脚本测试用于实验使用。(以下脚本并未全部按照题目所描述写)
#!/bin/bash
#chkconfig: 345 98 2
#descrption:Testing services
#script_name:testser
#Author:Li
. /etc/rc.d/init.d/functions #调用系统函数文件(注释)
ser='/var/lock/subsys/script_shell' #模拟服务文件
start(){
if [ -e $ser ] ;then
echo "The service is already running" #判断文件是否存在并打印相应内容
else
touch $ser #创建文件
action "service started successfully"#action 内置函数 文章结尾有注释
fi
}
stop(){
if [ -e $ser ] ;then
rm -rf $ser
action "service stop "
else
echo "service not running"
fi
}
restart(){
if [ -e $ser ] ;then
sleep 0.5 #间隔时间(仅为模拟服务启动过程使用)
stop
sleep 0.5
start
else
action "service not running" /bin/false
sleep 0.5
start
fi
}
status(){
if [ -e $ser ];then
echo -e "\tThe service is running..."
else
echo -e "\tservice not running"
fi
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo "Please enter the correct parameters (start|stop|restart|status)"
esac
chkconfig --add testser #将其生成为服务 (请将脚本放置于/etc/init.d/目录下执行)
chkconfig tesetser off #可以禁止该服务开机启动#执行结果
[root@mage_C6 ~]# service testser start
service started successfully [ OK ]
[root@mage_C6 ~]# service testser stop
service stop [ OK ]
[root@mage_C6 ~]# service testser restart
service not running [FAILED]
service started successfully [ OK ]
[root@mage_C6 ~]# service testser start
The service is already running
[root@mage_C6 ~]# service testser status
The service is running...
[root@mage_C6 ~]#
此脚本将 /var/lock/sybsys/script_shell 作为测试服务使用。利用它模拟一个服务的启动、停止等过程。
注释:action:打印某个信息并执行给定的命令,它会根据命令执行的结果来调用 success,failure方法
如果想了解你参考下面这位兄台的博客。
http://www.cnblogs.com/p_w_picpath-eye/archive/2011/10/26/2220405.html