Linux开机启动服务

1.Linux运行级别

Linux开机启动服务的相关目录就是/etc/rc.d。目录下有以下文件:

chkconfig1

这里面有rc0.d~rc6.d这7个目录,就分别对应7个运行级别。

0:系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动,机器关闭。

1:单用户工作状态,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录。

2:多用户状态,没有NFS支持。

3:完整的多用户模式,有NFS,登陆后进入控制台命令行模式。

4:系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。

5:X11控制台,登陆后进入图形GUI模式,X Window系统。

6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。运行init 6机器就会重启。

使用runlevel指令可以查看当前的运行级别:

chkconfig2

使用init指令可以切换运行级别(以前使用init 0关机和init 6重启,现在终于明白是肿么回事了)。

话题回来,那这几个目录跟开机启动服务有什么关系呢?进入最常用的rc3.d(也就是命令行模式)来看看下面有什么文件:

chkconfig3

里面有几个奇怪的ln文件,不造干什么的是不是。别急,返回上一层目录,进入init.d:

chkconfig4

init.d目录下存放的是service脚本文件(经常service操作就是执行这下面的指令,例如service network start),发现这下面的文件是与rc3.d有联系的。rcN.d下文件的命名规则是K+nn+服务名或S+nn+服务名,其中nn为两位数字。但系统进入不同的运行级别时,会进入对应的rcN.d目录。以K开头的文件,系统将终止对应的服务; S开头的文件,系统将启动对应的服务。

2.chkconfig指令:

chkconfig --list #查看所有服务在不同运行级别开机状态

chkconfig5

来看下每个服务在运行级别3下的 状态,在看下rc3.d下的文件,是不是发现了它俩之间的关系。没错,以K开头的文件,对应的状态为off,就是进入这个运行级别时被关闭;以S开头的文件,对应的状态为on,就是进入这个运行级别时被启动。

chkconfig还可以添加、删除开机启动服务,也可以为服务设置在哪个运行级别中开机启动:

chkconfig --add httpd #增加httpd服务
chkconfig --del httpd #删除httpd服务
chkconfig --level httpd 2345 on #把httpd在运行级别为2、3、4、5的情况下都是on的状态

当你使用yum安装某个服务时,会在init.d/下生成该服务脚本,这时就可以使用chkconfig设置该服务开机启动。

3.CentOS7中的开机启动服务:

lz发现CentOS7的服务安装与以前版本有所不同,自己便亲自操作了一下,过程如下:

lz在自己虚拟机上安装nginx来作为实验对象。


rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

yum install nginx

这时并没有在init.d/下生成nginx的脚本。lz执行如下指令:


service nginx start

chkconfig6

它把服务的启动重定向到了systemctl指令。CentOS7使用该指令来管理服务,所以开机启动可以这样设置:


systemctl enable nginx.service #增加nginx服务
systemctl disable nginx.service #删除nginx服务
systemctl list-unit-files #查看所有开机启动的服务

4.开机执行指令启动:

如果某个服务并没有加入chkconfig或者systemctl管理中(例如直接将tar包解压到系统上的服务),该怎么处理呢?

在rc.d/下还有一个未提及的文件rc.local文件,lz就利用它来启动服务。

在该文件中加入启动服务的指令


vim /etc/rc.d/rc.local

/usr/tomcat/bin/startup.sh &

1 Reply to “Linux开机启动服务”

发表评论