linux设置服务开机启动

在linux的服务运维管理中,经常会出现这么一种需求,即通过自定义的脚本启动或者关闭一些服务,尽管有些软件在安装的时候可以进行设置,但如果要管理的服务特别多的情况下,假如服务器重启了,仍有一些服务需要一个个查找然后手动启动,这毕竟是一件麻烦的事,如果能够通过自己写脚本的方式,或者提前把相关的服务以service的形式进行了管理,再或者是设置成了开机启动,岂不是省了许多的麻烦事吗,

下面我们来简单探讨2个问题,服务脚本如何可以被service管理,以及如何设置服务脚本的开机启动

1、先看第一个问题,假如我们有下面这个shell脚本,具备基本的shell知识的同学应该能够看明白,其实就是模拟某个服务启动,

#!/bin/bash

case $1 in
        start)
                echo 'starting !!!'
        ;;
        stop)
                echo 'stop !!!'
        ;;
        restart)
                echo 'restart !!!'
        ;;
        *)
                echo 'please input start|stop|restart !'
        ;;
esac

我们世界运行试一下效果,是不是很像我们启动类似mysql的效果,
linux设置服务开机启动_第1张图片
当然,假如这个脚本能够被使用的话,我们期望的是它能够被linux的service管理起来,即做成一个服务,这样很方便实际的运维管理,要怎么做呢?

在linux下,有一个目录专门用以管理所有的服务的启动脚本的,即/etc/rc.d/init.d下,进去看看,
linux设置服务开机启动_第2张图片
里面有一个大家比较熟悉的文件,mysqld这个就是mysql的启动脚本文件,假如我们把刚刚自定义的脚本也拷贝进来放在这个目录下呢

在这里插入图片描述
这时候,我们来试一下使用service的命令进行启动,可以看到,这时候就可以通过service的方式进行启动了,真实运维中也是如此,我们只需要把服务的启动脚本文件放在此处,就可以以service的方式启动了,

linux设置服务开机启动_第3张图片

2、再看第二个问题,有时候我们为了省去一个个启动服务脚本的麻烦,在服务器重启的情况下,相关的服务能够开机自动启动要怎么实现呢?

想必大家熟悉的方式是这样,通过如下命令来设置,

chkconfig iptables off/on

在这里插入图片描述
通过上述这个命令,就可以设置防火墙开机自动关闭或者重启,那么我们自己的服务脚本呢?
linux设置服务开机启动_第4张图片
很明显,我们自定义的服务脚本无法这样设置,是不是就不可以做了呢?当然不是,要知道为什么linux可以实现类似防火墙的可以设置开机启动,我们得稍微研究一下其原理,比如下面有一个apache的脚本httpd的文件,我们试下,设置成功,
linux设置服务开机启动_第5张图片

我们进入这个脚本去看看,其实决定服务脚本是否能够进行chkconfig设置的就是这两行内容,
linux设置服务开机启动_第6张图片

其中有两个参数解释一下,第一个参数85表示开机启动的时候该脚本的执行顺序的优先级,第二个表示关闭的时候的关闭顺序级别,当然越大越靠后了,按照这个思路,我们在自己的脚本里面也加上这一段,
linux设置服务开机启动_第7张图片

这时候我们再来启动一下,看看是不是能够设置开机启动了呢?可以看到,设置成功了,即可以通过chkconfig的形式来设置自定义脚本了
linux设置服务开机启动_第8张图片

最后再介绍一种设置服务的开机启动的形式,步骤大概如下,
1、在/etc/rc.d目录下,编辑文件rc.local,将脚本的位置引入进去即可,如下,
linux设置服务开机启动_第9张图片

通过以上的方式,基本上可以实现自定义脚本的服务管理或实现开机自启动的功能

你可能感兴趣的:(linux)