22.2.2 服务器守护进程的运行方式

22.2.2  服务器守护进程的运行方式

运行一个服务(例如SSH)最简单的办法就是让它的守护进程在引导的时候就启动,然后一直运行,监听并处理来自客户机的请求。在刚开始,这样的设置不会有什么问题。但随着服务的增多,这些运行在后台的守护进程会大量消耗系统资源(因为它们一直在运行!),这种消耗常常是没有必要的。举例来说,SSH服务一天内可能只会被一个管理员用到几次,这样,/etc/sbin/sshd每天空闲的时间甚至接近20个小时。

inetdxinetd就是为了解决这种矛盾而诞生的。inetd最初由伯克利的专家们开发,这个特殊的守护进程能够接管其他服务器守护进程使用的网络端口,在监听到客户端请求后启动相应的守护进程,并为这个服务器守护进程建立一条通往指定端口的输入/输出   通道。

inetd的意义在于,系统上不用同时运行多个“没有事做”的守护进程。像SSHFTP这样平时不怎么用到的服务可以配置为使用inetd,这样它们可以把监听端口的任务交给inetd。当出现一条FTP连接时,inetd就启动FTP服务的守护进程;同样,当管理员有事找SSH的时候,inetd就把sshd叫醒。

inetd最初在UNIX系统上被设计,后来被移植到了Linux上。现在绝大多数Linux已经使用了更好的xinetd。相对于inetd而言,xinetd有以下优点:

q      更多的安全特性;

q      针对拒绝服务攻击的更好的解决方案;

q      更强大的日志管理功能;

q      更灵活清晰的配置语法。

尽管如此,一些Linux系统仍然在使用inetd。因此在详细讨论xinetd配置之后,本章还会对inetd做简单的介绍。

现在可以把本节的标题补充完整了。服务器守护进程的运行方式有两种:一种是随系统启动而启动,并持续在后台监听连接请求;另一种是借助于inetd/xinetd,在需要的时候启动,完成任务后把监听任务交还给inetd/xinetd。通常,前者被称为standalone模式,后者被称为inetd/xinetd模式。(尽管这种叫法听上去有点别扭,但既然大家都这么说,就随大流吧。)

并不是所有的服务器守护进程都支持inetdxinetd,应用程序必须在编写的时候就加入对这种模式的支持。一些服务器守护进程(例如sshdapache2)既支持standalone模式,也能支持inetd/xinetd模式。在接下来几章的服务器配置中会涉及这两种运行模式的选择。

inetd/xinetd模式的确有很多优点,但事情总不能一概而论。对大型Web站点而言就不应该使用inetd/xinetd模式运行Apache(当前最流行的Web服务器软件),因为这些服务器访问量巨大,每分每秒都会有新的连接请求,让inetd/xinetd如此频繁地启动和关闭Apache守护进程会非常糟糕。

对于桌面版本的Linux而言,inetdxinetd通常都需要手动安装。Ubuntu Linux在其安装源中提供了inetdxinetd,而openSUSE只提供了xinetd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值