首页 > 服务器学习 > Linux > Linux中服务的启动和自启动
2016
12-17

Linux中服务的启动和自启动

 RPM安装包程序的一般默认文件存放路径:

/etc/:配置文件存放位置  /etc/rc.d/init.d/:启动脚本存放位置

/etc/init.d/:启动脚本存放位置(init.d是一个软连接,指向rc.d/init.d)

/etc/sysconfig/:初始化环境配置文件存放位置

/etc/xinetd.conf:xinetd配置文件  /etc/xinet.d/:基于xinetd服务的各种服务启动配置文件

/var/lib/:服务产生的数据存放位置  /var/log/:日志存放位置

  系统服务命令其实就是在默认的目录下搜索指定的服务名的脚本或配置文件。

而源码包安装的服务一般都是在源码包的安装目录下(默认/usr/local),系统命令不会搜索该目录,所以系统命令不能直接管理源码包安装的服务。

一、服务的启动

1、独立的服务启动(有两种方法)

/etc/init.d/独立服务名 start|stop|restart|status(查询指定服务的运行状态)

service 独立服务名 start|stop|restart|status(查询指定服务的运行状态)

service命令是红帽子内核的Linux特有的命令,别的Linux命令不一定有此命令,所以推荐使用第一种启动方法。

2、基于xinetd(超级守护进程)的服务:

Linux一般是默认没有安装这个服务的,需要手动安装服务,yum -y install xinetd,现在用telnet服务作为例子讲一下基于xinetd的服务的启动:

telnet服务是xinetd服务管理下的一个服务,但是由于安全性问题,现在已经默认ssh替代了,所以telnet服务默认是没有安装的,需要手动安装yum -y install telnet-server。

telnet服务的启动(修改/etc/xinetd.d/目录下对应的配置文件):

vim /etc/xinetd.d/telnet

配置参数如下:

service telnet:服务的名称

flags=REUSE:设定TCP/IP socket可重用

socket_type=stream:使用TCP协议数据包

wait=no:允许多个连接同时连接

user=root:允许服务的用户为root

server=/usr/sbin/in.telnetd:服务的启动程序

log_on_failure+=USERID:登录失败后,记录用户的ID

disable=yes:服务是否启动(yes代表不启动,no代表启动)

修改完配置文件重启xinetd服务,如果telnet服务配置文件允许启动,则该服务会启动。

3、源码包安装的服务的启动

使用绝对路径,调用启动脚本来启动,不同的源码包启动脚本不同,可以查看源码包的安装说明来查看启动脚本方法。

如:/usr/local/apache/bin/apachectl start|stop

二、服务的自启动:

1、使用系统命令配置独立服务和基于xinetd的服务自启动,由于源码包安装的服务不能使用系统命令管理,所以源码包安装的服务不能使用命令配置自启动

查询服务自启动设置:chkconfig --list

该命令仅仅可以查看系统的所有服务针对各个运行级别的自启动状态,并不能查看当前系统服务的运行状态,显示的数字就是系统运行级别(0:关机;1:单用户;2:不完全多用户,不含NFS服务;3:完全多用户;4:未分配;5:图形界面;6:重启)。

设定服务自启动:chkconfig [--level 运行级别] [服务名] [on|off]

如:chkconfig --level 2345 httpd on

代表把系统运行级别为2,3,4,5的httpd服务都设置为开机自启动,其中运行级别默认就是2345,所以可以省略,即chkconfig httpd on也可以。

由于基于xinetd的服务是由xinetd服务管理的(基于xinetd服务的服务越来越少),所以基于xinetd的服务设置自启动时是不需要设置运行级别的,直接运行chkconfig telnet on|off即可,它的运行级别是跟xinetd服务设置有关的。

需要注意的是当设置一个基于xinetd的服务的自启动时,如telnet,修改telnet服务的自启动状态为关,那么当前系统中的服务也会关闭,如果修改telnet服务的自启动状态为开,那么当前系统中telnet服务会即时开启,同理,当手动把telnet服务关闭时,那么它的自启动状态也会变成关闭。就是说基于xinetd的服务的启动和自启动是通用的。

2、通过修改配置文件设置服务的自启动(所有的服务都可以使用这个方法)

修改/etc/rc.d/rc.local文件,/etc/rc.local是软链接文件,指向/etc/rc.d/rc.local,所以直接打开/etc/rc.local修改也是可以的。

每行一个服务的启动命令保存就可以了,使用绝对路径,如:

/etc/init.d/独立服务名 start(添加独立服务自启动)

/usr/local/apache/bin/apachectl start(添加源码包服务自启动)

三、让系统命令识别源码包服务的方法:

1、让service命令识别:在service命令的默认搜索目录中新建一个空文件,然后软链接到源码包启动服务的文件即可。

如in -s /usr/local/apache/bin/apachectl /etc/init.d/aaa(文件名即自定义的服务名)

这时候service aaa start|stop即可正常使用。

2、让chkconfig命令识别

vim /etc/init.d/aaa,打开启动配置文件在文件中加入:

# chkconfig:2345 86 76

# #description:this server is httpd

第一句指定脚本可以被命令管理,后面数字格式:运行级别 启动顺序 关闭顺序

第二句是服务的说明,内容随意

启动顺序和关闭顺序在/etc/rc.d目录下的对应目录文件中,rcn.d中的n代表系统运行级别

ls /etc/rc.d/rc3.d

显示的以S开头的是代表启动级别,以K开头的代表关闭级别,设定的启动级别和关闭级别不能和已经存在的级别相同。

最后使用命令chkconfig --add aaa把服务添加进命令管理,以后就可以使用命令管理了。

命令chkconfig --del aaa把服务从chkconfig管理中删除。

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。