课程名称:Linux服务管理
章节名称:第2章 RPM包服务管理
讲师名称:Tony
守护进程就是为了实现服务、功能的进程。比如,我们的 apache 服务就是服务(Service),它是用来实现 Web 服务的。那么,启动 apache 服务的进程是哪个进程呢?就是 httpd 这个守护进程(Daemon)。也就是说,守护进程就是服务在后台运行的真实进程。
Linux 中的服务按照安装方法不同可以分为 RPM 包默认安装的服务和源码包安装的服务两大类。其中,RPM 包默认安装的服务又因为启动与自启动管理方法不同分为独立的服务和基于 xinetd 的服务。
源码包是开源的,自定义性强,通过编译安装更加适合系统,但是安装速度较慢,编译时容易报错。RPM 包是经过编译的软件包,安装更快速,不易报错,但不再是开源的。但是软件包一旦安装到 Linux 系统上,它们的区别是什么呢?最主要的区别就是安装位置不同,源码包安装到我们手工指定的位置当中,而 RPM 包安装到系统默认位置当中(可以通过"rpm -ql 包名"命令查询)。也就是说,RPM 包安装到系统默认位置,可以被服务管理命令识别;但是源码包安装到手工指定位置,当然就不能被服务管理命令识别了(可以手工修改为被服务管理命令识别)。
RPM 包默认安装的服务。这些服务是通过 RPM 包安装的,可以被服务管理命令识别。
这些服务又可以分为两种:
源码包安装的服务。这些服务是通过源码包安装的,所以安装位置都是手工指定的。由于不能被系统中的服务管理命令直接识别,所以这些服务的启动与自启动方法一般都是源码包设计好的。每个源码包的启动脚本都不一样,一般需要查看说明文档才能确定。
源码包安装的服务是不能被服务管理命令直接找到的,而且一般会安装到 /usr/local/ 目录中。
在 /usr/local/ 目录中的服务都应该是通过源码包安装的服务。RPM 包默认安装的服务都会安装到系统默认位置,所以是可以被服务管理命令(如 service、chkconfig)识别的。
chkconfig 是管理 RPM 包默认安装的服务的自启动的命令。
#列出系统中RPM包默认安装的所有服务的自启动状态 chkconfig -list
chkconfig 没有看到基于 xinetd 的服务,那是因为系统中默认没有安装 xinetd 这个超级守护进程,需要我们手工安装。
yum -y install xinetd
计算机中的协议主要分为两大类:
这两种协议都支持 216,也就是 65535 个端口。这么多端口怎么记忆呢?系统给我们提供了服务与端口的对应文件 /etc/services。
虽然判断服务器中开启的服务还有其他方法(如通过ps命令),但是通过端口的方法查看最为准确。命令格式如下:
netstat 选项 netstat -tuln netstat -an
独立的服务要想启动,主要有两种方法。
1、使用/etc/init.d/目录中的启动脚本来启动独立的服务
既然所有独立服务的启动脚本都存放在 /etc/init.d/ 目录中,那么,调用这些脚本就可以启动独立的服务了。这种启动方式是推荐启动方式,命令格式如下:
/etc/init.d独立服务名 start| stop|status|restart|...
2、使用service命令来启动独立的服务
service 命令实际上只是一个脚本,这个脚本仍然需要调用 /etc/init.d/ 中的启动脚本来启动独立的服务。
service 独立服务名 start|stop|restart|...
自启动指的是在系统之后,服务是否随着系统的启动而自动启动。
独立服务的自启动方法有三种:
1、使用 chkconfig 服务自启动管理命令
chkconfig [--level 运行级别][独立服务名][on|off] # 设置apache服务在进入2、3、4、5级别时自启动 chkconfig --level 2345 httpd on
2、修改 /etc/rc.d/rc.local 文件,设置服务自启动
这个文件是在系统启动时,在输入用户名和密码之前最后读取的文件(注意:/etc/rc.d/rc.loca和/etc/rc.local 文件是软链接,修改哪个文件都可以)。这个文件中有什么命令,都会在系统启动时调用。
推荐大家使用这种方法管理服务的自启动,有两点好处:
还要注意一下,修改 /etc/rc.d/rc.local 配置文件的自启动方法和 chkconfig 命令的自启动方法是两种不同的自启动方法。所以,就算通过修改 /etc/rc.d/rc.local 配置文件的方法让某个独立的服务自启动了,执行"chkconfig --list"命令并不到有什么变化。
3、使用 ntsysv 命令管理自启动
第三种方法是使用 ntsysv 命令调用窗口模式来管理服务的自启动,非常简单。
ntsysv
ntsysv 命令虽然简单,但它是红帽系列 Linux 的专有命令,其他的 Linux 发行版本不一定拥有这条命令,而且条命令也不能管理源码包安装的服务,所以我们推荐大家使用 /etc/rc.d/rc.local 文件来管理服务的自启动。
源码包服务的启动管理方式就是在服务的安装目录中找到管理脚本,然后执行这个脚本。
问题来了,每个服务的启动脚本都是不一样的,我们怎么确定每个服务的启动脚本呢?还记得在安装源码包服务时,我们强调需要査看每个服务的说明文档吗(一般是 INSTALL 或 READEM)?在这个说明文档中会明确地告诉大家服务的启动脚本是哪个文件。
我们用 apache 服务来举例。一般 apache 服务的安装位置是 /usr/local/apache2/ 目录,那么 apache 服务的启动脚本就是 /usr/local/apache2/bin/apachectl 文件(查询 apache 说明文档得知)。启动命令如下:
[root@localhost ~]# /usr/local/apache2/bin/apachectl start|stop|restart|...
源码包服务的白启动管理也不能依靠系统的服务管理命令,而只能把标准启动命令写入 /etc/rc.d/rc.local 文件中。系统在启动过程中读取 /etc/rc.d/rc.local 文件时,就会调用源码包服务的启动脚本。
#!/bin/sh touch /var/lock/subsys/local /usr/local/apache2/bin/apachectl start