独立守护进程init.d和超级守护进程xinet.d区别和联系

来源:互联网 发布:郑芝龙地位 知乎 编辑:程序博客网 时间:2024/06/05 23:42
转载并参考 http://www.cnblogs.com/itech/archive/2010/12/27/1914846.html

1、守护进程:
     Linux 服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。
     提供这些服务的程序是由运行在后台的守护进程来执行的。
     守护进程是生存期长的一种进程。
     它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。

     他们常常在系统引导装入时启动,在系统关闭时终止。


2、独立守护进程:

     该类进程启动后就常驻内存,所以会一直占用系统资源。其最大的优点就是它会一直启动,当外界有要求时相应速度较快,像httpd,dns等进程。


3、超级守护进程:
     系统启动时由一个统一的守护进程xinet来负责管理一些进程,当相应请求到来时需要通过xinet的转接才可以唤醒被xinet管理的进程。这种进程的优 点是最初只有xinet这一守护进程占有系统资源,其他的内部服务并不一直占有系统资源,只有数据包到来时才会被xinet管理员来唤醒。并且我们还可以通过xinet来对它所管理的进程设置一些访问权限,相当于多了一层管理机制。

4、存在的条件
     独立守护进程:一般都在适用于系统中一些负载高的服务,Sendmail、Apache服务是单独启动的,而其他的ssh,ftp,rounte服务都使用xinetd超级服务管理的。对于访问量大、经常出现并发访问的情况,xinetd则要频繁启动相应的网络服务进程,反而会导致系统性能下降。原则上任何系统服务都可以使用xinetd,然而最适合的应该是那些常用的网络服务,同时,这个服务的请求数目和频繁程度不会太高。像DNS和Apache就不适合采用这种方式,而像FTP、Telnet、SSH等就适合使用xinetd模式。
5、Linux提供了三种不同的守护进程管理工具:redhat-config-services、ntsysv、chkconfig
     # service iptables status    #查看相应服务的状态,用service需要服务在/etc/init.d/目录中存在
     # netstat -tulp    #会列出相应的服务及其监听的端口号等,若加n参数会列出端口号
     #chkconfig --list |grep 服务名 #会列出现在当前服务的各种状态,包括在不同运行级别下的启情况,分为上线两部分,上部分是独立启动的服务,你      会看到xinetd也在,下面部分是有inet管理的超级守护进程,没有运行级别可分的
6、xinetd优缺点
     1) 强大的存取控制功能
      — 内置对恶意用户和善意用户的差别待遇设定。
      — 使用libwrap支持,其效能更甚于tcpd。
      — 可以限制连接的等级,基于主机的连接数和基于服务的连接数。
      — 设置特定的连接时间。
      — 将某个服务设置到特定的主机以提供服务。

      2) 有效防止DoS攻击
      — 可以限制连接的等级。
      — 可以限制一个主机的最大连接数,从而防止某个主机独占某个服务。
      — 可以限制日志文件的大小,防止磁盘空间被填满。

      3) 强大的日志功能
— 可以为每一个服务就syslog设定日志等级。
— 如果不使用syslog,也可以为每个服务建立日志文件。
— 可以记录请求的起止时间以决定对方的访问时间。
— 可以记录试图非法访问的请求。

4) 转向功能
可以将客户端的请求转发到另一台主机去处理。

5) 支持IPv6
xinetd自xinetd 2.1.8.8pre*起的版本就支持IPv6,可以通过在./configure脚本中使用with-inet6 capability选项来完成。注意,要使这个生效,核心和网络必须支持IPv6。当然IPv4仍然被支持。

6) 与客户端的交互功能
无论客户端请求是否成功,xinetd都会有提示告知连接状态
当前,它最大的缺点是对RPC支持的不稳定性,但是可以启动protmap,使它与xinetd共存来解决这个问题。


7、注意几个配置文件或者目录
 /etc/inittab
 /etc/init.d/*
 
 /etc/xinetd.conf
 /etc/xinetd.d/*
 /etc/hosts.allow
 /etc/hosts.deny
 
 chkconfig
 service
 
 
 在/etc/services 中设置了xinetd下的service对应的端口,例如:
    $  cat /etc/services | grep rsync
    rsync           873/tcp                         # rsync
    rsync           873/udp                         # rsync
0 0
原创粉丝点击