当我们刚打开计算机之后,就发现操作系统中已经运行了很多的程序,这些程序中有一些是操作系统的服务程序,有一些是第三方的服务比如,mysql服务,http服务等。如何有效的管理这些自启动服务是我们每一个Linux管理员必须掌握的技能,下面我们就来讲解一下如何设置centos 下,服务的开机自启动。
CentOS 6.7 x64
在CentOS中总共有7中运行级别,可以在/etc/inittab文件中进行设置,7种运行级别对应着/etc/rc.d/rc[0-6].d 这7个目录
ps: 你可能也发现了在/etc下也有同样的7个文件夹即 /etc/rc[0-6].d ,通过查看发现/etc/rc[0-6].d其实就是/etc/rc.d/rc[0-6].d的软连接,只是为了保持和Unix的兼容性
这7个目录对应着7种不同运行级别,也就是说在每一个目录下的内容表示在该运行级别下应该启动或者关闭的服务。例如我们看一下/etc/rc.d/rc5.d目录下的内容
当然你可能也发现了,这些文件是按照如下格式命名的 [KS][1-100]servicename ,它表示当系统的运行级别为5时,它会关掉以K开头的所有服务,并启动所有以S开头的服务,其实,这些服务都是/etc/init.d/中某个服务的软连接,所以真正启动的服务是/etc/init.d目录中的某一个服务,而以K/S开头建立软连接是为了表明在对应级别下应该采取的行为,K/S后面紧跟的数字表示开/关服务的优先级。
因此,如果我们自己写了一个脚本代码 如cleanupd,需要在开机级别为3的时候自启动的话,那么我们只需要把可执行的cleanupd脚本文件放到 /etc/init.d目录下,并在对应的运行级别目录下 如/etc/rc.d/rc3.d/ 建立一个以S开头后加数字的软连接到/etc/init.d/cleanupd即可,如
[root@nichao ~]# ln -s /etc/init.d/cleanupd /etc/rc.d/rc3.d/S95cleanup
显然,这样的设置方式比较繁琐,仅仅适合于我们想DIY的脚本服务。
鉴于上面的手工操作比较繁琐,在CentOS中专门提供了chkconfig 命令来设置或者取消开机自启动服务。
使用chkconfig 或者 chkconfig –list就可以看出当前系统已经设置的各个服务在各个运行级别下的开闭状态。如果我们想设置某个服务自启动或者关闭的话,那么只需要按照下面的格式使用即可
chkconfig servicename on/off
如上图可以看到,我们设置sshd服务开机自启,但是它的缺省自启的运行级别是在2345上的,我们可以在设置的时候加上–level 参数来明确表明需要在哪些级别上自启。
如:chkconfig –level 35 sshd on 表示在级别3和5上开机自启动
如图所示,在级别为3 5的时候,sshd服务被设置为启动状态,而2 4 级别则设置为关闭状态。
ntsysv和chkconfig其实是一样的,只是提供gui界面而已。
在shell中有两种方式可以调出gui界面,一种直接输入ntsysv 另一种输入setup 然后选择系统服务
通过这种方式设置的话,所设置的服务启动/关闭都是针对于当前的运行级别的,如何我当前的运行级别是3那么这种方式设置完成之后,所对应的操作只对运行级别3生效,也即等价于使用如下命令进行的设置
chkconfig --level 3 sshd on
当然我们可以对ntsysv进行配置,即使用ntsysv –level 2345选项来设置,那么生效的服务就是针对–level中所提到的级别有效了。
显然,第一种方法适合DIY自己的服务,而后两种方法则适合配置系统中存在的服务比如ftp ssh等。如果想针对某一项服务进行开启,重启,关闭,查看状态等操作的话可以使用如下方式进行,以sshd服务为例
1)
/etc/init.d/sshd start|restart|stop|status
2)
service sshd start|restart|stop|status