在讲解xinetd之前,我们先要了解什么是守护进程。 

   守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的意思)。

  由于在Linux中, 每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相 应的进程都会自动关闭。但是守护进程却能够突破这种限制,它从被执行开始运转,直到整个系统关闭时才退出。如果想让某个进程不因为用户或终端或其他地变化 而受到影响,那么就必须把这个进程变成一个守护进程。

      每个守护进程都会监听一个端口,一些常用守护进程的监听端口是固定的,像httpd监听80端口, sshd监听22端口等;我们可以将其理解为责任制,时候等待,有求必应。具体的端口信息可以通过cat /etc/services来查看。 

      在Linux中,守护进程有两种方式,一种是svsy方式,一种是xinetd方式(超级守护进程)。 每个守护进程都会有一个脚本,可以理解成工作配置文件,守护进程的脚本需要放在指定位置,独立启动守护进程:放在/etc/init.d/目录下,当然也包括xinet的shell脚本;超级守护进程:按照xinet中脚本的指示,它所管理的守护进程位于/et/xinetd.config目录下。  

sysv:

独立启动,一开机运行就会进入内存,一直处于listen状态,即使该守护进程不运行也会一直占用系统资源,但是其最大的优点就是,它一直启动,当有请求时会立即响应,响应速度快,比如http服务,这样的进程都保存在/etc/rc.d/init.d目录下

xinet d:

超级守护进程,管理众多的进程,比如telnet服务。xinetd自己是一个sysv,它就像老板一样,自己常驻于内存,管理其它的进程,其它进程就相当于它的员工,在其它进程没有用时会睡眠,并不占用系统资源,当有工作时候老板xinetd会通知它的员工,唤醒某个进程来执行作业。这种方式适合于那些不是经常被人使用,不需要常驻内存的程序,但是此方式响应时间长,但是节省系统资源,方便管理。超级守护进程的配置文件是/etc/xinetd.conf,超级守护进程的子进程们存放在/etc/xinetd.d/目录下   

 

下面我们来讲解一下它的参数:

disable 定义是否启动{no|yes}no表示开启,yes表示关闭

socket_type {stream|dgram}表示套接字格式,stream是TCP,dgram为udp

protocol 协议类型,这些是需是/etc/protocol里可用的

wait 允许并发数,{yes|no}yes单线程,no多线程

user  运行身份

server 有哪个文件/程序启用该服务

server_args  传递的参数

only-from 白名单

no-access 黑名单

access-time 定义访问时间

log-type {SYSLOG|FILE} syslog定义日志类型,级别;file定义日志存放位置

bind 监听ip

log-on-success 记录登陆成功的信息

log-on-failure  记录登陆失败的信息

per-source    资源限制,限制某一ip同时连接请求数

phier-source = UNLIMITED表示不做限制

cps = n m 定义美妙最大连接数为n,超出后等待m秒后再尝试连接

下面我们以telnet服务为例:

server telnet

{

         disable         = no            表示服务已经开启

         flags           = REUSE        

         socket_type     = stream        表示套接字stream表示TCP,dgream并表示UDP

         wait            = no            no表示为多线程服务,yes表示为单线程,用于并发连接请求。

         user            = root          以root的身份运行此服务

         server          = /usr/sbin/in.telnetd  定义有哪个进程起启动此服务,并接受用户访问

         log_on_failure  += USERID        表示在默认规则上扩展显示。

         log_type        = FILE /tmp/telnet_log  定义此服务日志的存储位置

         bind            = 192.168.0.24   指定监听IP

         per_source      = 1              指定同一IP允许向此服务最多打开的连接数

         access_times    = 08:00-19:30    指定可以使用此服务的时间

         cps             = 100 2          表示每秒最多可以有100个用户连接次服务,超出着等待2s重连

         only_from       = 192.168.0.0/25 表示仅允许192.168.0.0/25网段的计算机连接次服务


每一次配置完成后,都需要重启xinetd服务,开启后关闭xinetd的子进程时,可以使用chkconfig SERVER on 和 chkconfig SERVER off 。 

几种能用到的查询命令

# netstat -tulp             会列出相应的服务及其监听的端口号等,若加n参数会列出端口号

#chkconfig --list |grep SERVERNAME 会列出现在当前服务的各种状态,包括在不同运行级别下的启情况,分为上下两部分,上部分是独立启动的服务,你会看到xinetd也在,下面部分是有inet管理的超级守护进程,没有运行级别可分的。 

}