守护进程是一种运行于后台的系统进程,一般用于提供系统服务,执行特定的系统任务(如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接管