linux 脚本做成服务,linux shell编写系统服务脚本

事先准备工作:源码安装apache 。安装目录为/usr/local/httpd

任务需求:

1、可通过 service httpd start|stop|status|restart 命令对服务进行控制

2、httpd服务可开机自启动

思路:

1、start、stop操作可直接调用源码安装的httpd的控制程序apachectl

2、在启动服务时,建立httpd.lock文件;停止服务时删除

3、status操作检测httpd.lock文件是否存在,存在判断服务已启动,不存在表示服务停止

4、对每个操作建立对应的函数,进行调用

5、restart操作先调用stop函数,在调用start函数

6、服务脚本的控制参数通过位置变量 $1 传入,使用case分支进行识别、执行相应的操作

7、在脚本开头添加chkconfig管理参数,定义哪个运行级别启动、服务启动优先级、服务关闭优先级(让服务开机自启动,必须添加),description服务描述,进程名

PS:看过系统已有系统服务脚本,发现那些比我写的复杂多了。原谅我刚学shell,第一次写系统服务脚本

脚本如下:

#vim /etc/init.d/httpd#!bin/bash

#chkconfig:2345 55 25 //运行级别、启动优先级、关闭优先级

#processname:httpd //进程名

#description:source httpd server daemon //服务描述

prog=/usr/local/httpd/bin/apachectl //控制程序路径

lock=/usr/local/httpd/httpd.lock //lock文件路径

start(){ //start函数

$prog start

echo "正在启动服务...."

touch $lock

}

stop(){ //stop函数

$prog stop

echo "正在停止服务...."

rm -rf $lock

}

status(){ //status函数

if [ -e $lock ];then

echo "$0 服务正在运行"

else

echo "$0 服务已经停止"

fi

}

restart(){ //restart函数

stop

start //直接调用stop、start函数,

}

case "$1" in //case分支结构匹配,$1位置参数对控制参数调用

"start")

start //调用start函数

;;

"stop") //调用stop函数

stop

;;

"status") //调用status函数

status

;;

"restart") //调用restart函数

restart

;;

*) //其他参数就输出脚本正确用法

echo "用法:$0 start|stop|status|restart"

;;

esac

验证:

[root@ndbA /]# service httpd start

正在启动服务....

[root@ndbA /]# service httpd status

/etc/init.d/httpd 服务正在运行

[root@ndbA /]# service httpd stop

正在停止服务....

[root@ndbA /]# service httpd status

/etc/init.d/httpd 服务已经停止

[root@ndbA /]# service httpd stop

httpd (no pid file) not running

正在停止服务....

[root@ndbA /]# service httpd restatus

用法:/etc/init.d/httpd start|stop|status|restart

[root@ndbA /]# service httpd restart

httpd (no pid file) not running

正在停止服务....

正在启动服务....

[root@ndbA /]#

[root@ndbA /]# chkconfig --list httpd

httpd           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

[root@ndbA /]# chkconfig  httpd off

[root@ndbA /]# chkconfig --list httpd

httpd           0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭

[root@ndbA /]# chkconfig  httpd on

[root@ndbA /]# chkconfig --list httpd

httpd           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

[root@ndbA /]#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值