首页 > 代码库 > shell脚本生成服务演示服务启动、停止过程。

shell脚本生成服务演示服务启动、停止过程。

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_NAME is running...”
如果/var/lock/subsys/SCRIPT_NAME文件不存在,则显示“ SCRIPT_NAME
is 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/image-eye/archive/2011/10/26/2220405.html

本文出自 “秋季” 博客,请务必保留此出处http://lxlxlx.blog.51cto.com/3363989/1875458

shell脚本生成服务演示服务启动、停止过程。