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。
相关文章推荐
- 服务器守护进程的运行方式
- PHP-Websockets 上传文件2 优化支持php socket客户端和websocket连接websocket服务器 以守护进程方式运行编码
- python实现将程序以守护进程的方式运行
- Celery教程-------------以守护进程方式运行worker
- linux网络编程十一:将程序后台化,以守护进程的方式运行
- nohup命令:以守护进程方式运行一个程序
- Linux守护进程的运行方式(组图)
- 如何将我的php脚本以守护进程的方式一直运行
- linux下让solr以守护进程方式运行(让solr运行在后台)
- linux 守护进程与用&结尾的后台运行程序有什么区别
- 【Linux开发】Daemon后台运行及守护进程
- Linux 进程后台运行的几种方式 screen
- Java 实现程序运行状态监控 之我的思路(守护进程)
- 用Linux守护进程检测某个程序是否运行
- Linux守护进程工作原理和方式----笛风读书笔记系列
- Rsync总结笔记—以守护进程(socket)方式传输数据
- Python守护进程和脚本单例运行详解
- 企业级服务器应用、RAID、Cache和Buffer的区别、程序、进程、守护进程的区别
- Redis守护进程方式启动
- 进程数太多导致服务器无法运行