自定义服务脚本

++++++++++++++++++++++++++++++++++++++++++++++++
标题:Linux操作系统的自定义服务脚本
时间:2019年9月3日
++++++++++++++++++++++++++++++++++++++++++++++++

在实际的生产环境中,某些第三方的应用程序是不存在自启动脚本的。
也就是说如果应用服务器重启了,应用服务需要人工重启。才能使业务系统正常运行。
这样一来对运维工程师来说可能会是一个并不太好的消息,虽然这个并用不了多少时间。

下面我们就自己创建自定义的服务脚本。
什么是服务脚本:
归根到底,服务脚本就是一个非二进制的可执行文件(shell 脚本)。
我们可以自己定义一个脚本实现start、stop、restart及reload等服务对应的功能。
我们可以通过最简单、最明了的方式实现服务的管理。


实现自定义服务脚本需要了解的知识点:
什么是shebang
shebang是在执行脚本时未明确使用解释器时,默认会调用的脚本解释器。
shebang会定义在脚本的第一行,否则则会认为其是注释语句,不予解析。
定义格式:/usr/bin/env bash 或 /bin/bash 或 /usr/bin/python,建议使用第一种的方式。

自启动选项定义
例如:# chkconfig 345 99 01
第一个字段 配置自启动服务的命令
第二个字段 默认启动的运行级别,线上常用3(命令行),练习常用5(图形化),"-"表示默认全部关闭。
第三个字段 服务启动顺序,从0开始累加,这里定义99是为了避开系统服务和其它的应用服务。
第四个字段 服务器关机时,的服务停止顺序,01表示服务器关机时先停止该服务。
注意:自启动选项定义位于脚本的第二行。如果没有定义选项,是无法添加到自启动的。


自定服务脚本实例
服务:MySQL 数据库应用服务
需求:该MySQL 应用是通过软件仓库安装的,安装完成后大规模调整了配置文件。
在使用默认的mysqld服务时发现,系统并没有完全按照,配置文件的内容配置。例如:pid-file的位置。
现需要自定义启动脚本,并将服务添加到自启动服务中。
实现:编写MySQL 应用启动脚本
赋予启动脚本执行权限
添加服务自启动选项

MySQL 应用启动脚本
[root@mysql1 ~]# vim mysql
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#!/usr/bin/env bash
#chkconfig: 3 99 01
starting(){
ps aux |grep 'mysqld_safe' |grep -v 'grep' &>/dev/null
if [ $? -eq 0 ] ; then
echo -e "\e[1;31mmysql service already starting\e[1;0m"
exit
fi
/usr/bin/mysqld_safe --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/data/mysql/mysql3306 --user=mysql &
if [ $? -eq 0 ] ; then
echo -n "Starting mysqld: "
echo -e "\e[1;32m[ OK ]\e[1;0m"
else
echo -n "Starting mysqld: "
echo -e "\e[1;31m[ FAILED ]\e[1;0m"
fi
}

stoping(){
ps aux |grep 'mysqld_safe' |grep -v 'grep' &>/dev/null
if [ $? -ne 0 ] ; then
echo -e "\e[1;31mmysql service already stoping\e[1;0m"
exit
fi
/usr/bin/mysqladmin -p shutdown &>/dev/null
if [ $? -eq 0 ] ; then
echo -n "Stoping mysqld: "
echo -e "\e[1;32m[ OK ]\e[1;0m"
else
echo -n "Stoping mysqld: "
echo -e "\e[1;31m[ FAILED ]\e[1;0m"
fi
}
if [ "$1" == "start" ] ; then
starting
elif [ "$1" == "stop" ] ; then
stoping
else
echo -e "\e[1;31mPlease Enter Legal Param\e[1;0m"
fi
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[root@mysql1 ~]# chmod a+x mysql
[root@mysql1 ~]# cp mysql /etc/init.d/
[root@mysql1 ~]# chkconfig --add mysql
[root@mysql1 ~]# chkconfig --list mysql //查看不同运行级别是否开启自启动
注意:可使用命令"chkconfig --level 345 服务名称 on/off" 开启或关闭自启动项
可使用命令"chkocnfig --del 服务名称" 移除自启动服务配置

 

相关连接:

https://www.cnblogs.com/lv1572407/p/11451912.html

转载于:https://www.cnblogs.com/lv1572407/p/11451928.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值