什么是守护进程

守护进程是一种运行于后台的系统进程,一般用于提供系统服务,执行特定的系统任务(如sshd用于提供ssh远程连接的守护进程)

几个重要的守护进程

init是系统中第一个启动、也是最重要的守护进程,它的PID为1;inetd和xinetd是用于管理其他守护进程的守护进程(看上去有点绕,后面说明其作用)

守护进程的运行方式

standalone模式:守护进程随系统启动而启动,并始终运行

inetd/xinetd模式:守护进程接受inetd/xinetd管理,在需要的时候由inetd/xinetd启动

这两种模式的区别显而易见,standalone模式通常用于有频繁访问的服务(如web),inetd/xinetd模式用于不经常被访问的服务从而节省系统资源

inetd/xinetd守护进程

让所有的守护进程随系统启动时启动无疑是最简单的办法,但对于那些不经常被访问的服务来说,这些始终运行着的守护进程会浪费系统资源,是没有必要的。让这些守护进程在需要被使用的时候启动是一个很好的解决办法,inetd/xinetd就是为了解决这个问题而产生的。inetd/xinetd守护进程能够接管其他服务器守护进程所使用的网络端口,在监听到客户端连接请求时启动相应的守护进程,并为这个服务器守护进程建立一条通往指定端口的I/O通道,同时在连接完成后负责关闭此服务进程。xinetd是inetd的升级版,能够提供更多的安全性和管理功能,后面以目前常用的xinetd为例介绍

xinetd配置文件

xinetd守护进程根据/etc/xinetd.conf来管理守护进程,但现在的新版本中已经不鼓励对xinetd.conf进行修改,而是通过向/etc/xinetd.d目录中添加相应服务的配置文件的方式来管理(这样有利于管理员分类管理)。每个服务进程的xinetd配置文件的形式类似如下

service time
{
        disable         = yes
        type            = INTERNAL
        id              = time-stream
        socket_type     = stream
        protocol        = tcp
        user            = root
        wait            = no
}                                  

其中的各个参数这里不详细介绍了,请查阅相关资料

配置使用xinetd启动守护进程的步骤
  • 增加(修改)xinetd.d下的针对某种进程的配置文件
  • 停止该服务的守护进程:/etc/init.d/deamon stop
  • 重新启动xinetd守护进程使配置生效:/etc/init.d/xinetd restart
  • 检查相应运行级别下的rc目录中是否有该服务的启动脚本,然后考虑是否移除(不用删除,改名即可),或使用chkconfig --del 服务名 安全的从rc目录中移除

配置完成后可以使用netstat –tulpn | grep port 查看该服务已经由xinetd接管