您的位置:首页 > 其它

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

2009-12-18 14:43 141 查看

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

运行一个服务(例如SSH)最简单的办法就是让它的守护进程在引导的时候就启动,然后一直运行,监听并处理来自客户机的请求。在刚开始,这样的设置不会有什么问题。但随着服务的增多,这些运行在后台的守护进程会大量消耗系统资源(因为它们一直在运行!),这种消耗常常是没有必要的。举例来说,SSH服务一天内可能只会被一个管理员用到几次,这样,/etc/sbin/sshd每天空闲的时间甚至接近20个小时。
inetd和xinetd就是为了解决这种矛盾而诞生的。inetd最初由伯克利的专家们开发,这个特殊的守护进程能够接管其他服务器守护进程使用的网络端口,在监听到客户端请求后启动相应的守护进程,并为这个服务器守护进程建立一条通往指定端口的输入/输出 通道。
inetd的意义在于,系统上不用同时运行多个“没有事做”的守护进程。像SSH、FTP这样平时不怎么用到的服务可以配置为使用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模式。(尽管这种叫法听上去有点别扭,但既然大家都这么说,就随大流吧。)
并不是所有的服务器守护进程都支持inetd和xinetd,应用程序必须在编写的时候就加入对这种模式的支持。一些服务器守护进程(例如sshd、apache2)既支持standalone模式,也能支持inetd/xinetd模式。在接下来几章的服务器配置中会涉及这两种运行模式的选择。
inetd/xinetd模式的确有很多优点,但事情总不能一概而论。对大型Web站点而言就不应该使用inetd/xinetd模式运行Apache(当前最流行的Web服务器软件),因为这些服务器访问量巨大,每分每秒都会有新的连接请求,让inetd/xinetd如此频繁地启动和关闭Apache守护进程会非常糟糕。
对于桌面版本的Linux而言,inetd和xinetd通常都需要手动安装。Ubuntu Linux在其安装源中提供了inetd和xinetd,而openSUSE只提供了xinetd。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: