码迷,mamicode.com
首页 > 系统相关 > 详细

Linux shell编写系统服务脚本

时间:2015-09-02 20:40:26      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:

 1 事先准备工作:源码安装apache 。安装目录为/usr/local/httpd
 2 
 3 任务需求:
 4 1、可通过 service httpd start|stop|status|restart 命令对服务进行控制
 5 
 6 2、httpd服务可开机自启动
 7 
 8 思路:
 9 1、start、stop操作可直接调用源码安装的httpd的控制程序apachectl
10 2、在启动服务时,建立httpd.lock文件;停止服务时删除
11 3、status操作检测httpd.lock文件是否存在,存在判断服务已启动,不存在表示服务停止
12 4、对每个操作建立对应的函数,进行调用
13 5、restart操作先调用stop函数,在调用start函数
14 6、服务脚本的控制参数通过位置变量 $1 传入,使用case分支进行识别、执行相应的操作
15 7、在脚本开头添加chkconfig管理参数,定义哪个运行级别启动、服务启动优先级、服务关闭优先级(让服务开机自启动,必须添加),description服务描述,进程名
16 
17 PS:看过系统已有系统服务脚本,发现那些比我写的复杂多了。原谅我刚学shell,第一次写系统服务脚本
18 
19 脚本如下:
20 
21 #vim /etc/init.d/httpd
22 #!bin/bash 
23 #chkconfig:2345 55 25    //运行级别、启动优先级、关闭优先级 
24 #processname:httpd        //进程名 
25 #description:source httpd server daemon  //服务描述 
26 prog=/usr/local/httpd/bin/apachectl      //控制程序路径 
27 lock=/usr/local/httpd/httpd.lock        //lock文件路径 
28 start(){                                //start函数 
29         $prog start 
30         echo "正在启动服务...."
31         touch $lock 
32 } 
33 stop(){                                //stop函数 
34         $prog stop 
35         echo "正在停止服务...."
36         rm -rf $lock 
37 } 
38 status(){                        //status函数 
39         if [ -e $lock ];then
40             echo "$0 服务正在运行"
41         else
42             echo "$0 服务已经停止"
43         fi
44 } 
45 restart(){              //restart函数 
46         stop 
47         start          //直接调用stop、start函数, 
48 } 
49 case "$1" in        //case分支结构匹配,$1位置参数对控制参数调用 
50 "start") 
51         start      //调用start函数 
52         ;; 
53 "stop")            //调用stop函数 
54         stop 
55         ;; 
56 "status")            //调用status函数 
57         status 
58         ;; 
59 "restart")            //调用restart函数 
60         restart 
61         ;; 
62 *)                //其他参数就输出脚本正确用法 
63         echo "用法:$0 start|stop|status|restart"
64         ;; 
65 esac
66 
67 验证:
68 [root@ndbA /]# service httpd start
69 正在启动服务....
70 [root@ndbA /]# service httpd status
71 /etc/init.d/httpd 服务正在运行
72 [root@ndbA /]# service httpd stop  
73 正在停止服务....
74 [root@ndbA /]# service httpd status
75 /etc/init.d/httpd 服务已经停止
76 [root@ndbA /]# service httpd stop  
77 httpd (no pid file) not running
78 正在停止服务....
79 [root@ndbA /]# service httpd restatus
80 用法:/etc/init.d/httpd start|stop|status|restart
81 [root@ndbA /]# service httpd restart
82 httpd (no pid file) not running
83 正在停止服务....
84 正在启动服务....
85 [root@ndbA /]#
86 
87 [root@ndbA /]# chkconfig --list httpd
88 httpd          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
89 [root@ndbA /]# chkconfig  httpd off  
90 [root@ndbA /]# chkconfig --list httpd
91 httpd          0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭
92 [root@ndbA /]# chkconfig  httpd on
93 [root@ndbA /]# chkconfig --list httpd
94 httpd          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
95 [root@ndbA /]#

 

Linux shell编写系统服务脚本

标签:

原文地址:http://www.cnblogs.com/sysk/p/4779335.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!