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 [[email protected] /]# service httpd start 69 正在启动服务.... 70 [[email protected] /]# service httpd status 71 /etc/init.d/httpd 服务正在运行 72 [[email protected] /]# service httpd stop 73 正在停止服务.... 74 [[email protected] /]# service httpd status 75 /etc/init.d/httpd 服务已经停止 76 [[email protected] /]# service httpd stop 77 httpd (no pid file) not running 78 正在停止服务.... 79 [[email protected] /]# service httpd restatus 80 用法:/etc/init.d/httpd start|stop|status|restart 81 [[email protected] /]# service httpd restart 82 httpd (no pid file) not running 83 正在停止服务.... 84 正在启动服务.... 85 [[email protected] /]# 86 87 [[email protected] /]# chkconfig --list httpd 88 httpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 89 [[email protected] /]# chkconfig httpd off 90 [[email protected] /]# chkconfig --list httpd 91 httpd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭 92 [[email protected] /]# chkconfig httpd on 93 [[email protected] /]# chkconfig --list httpd 94 httpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 95 [[email protected] /]#
时间: 2024-10-04 02:05:43