1、什么是daemon呢?
平时我们的linux主机经常会收到各种请求,不管是本机的还是网络客户端的,所以linux主机需要调用各种程序或者命令去相应这些请求,而daemon就是用来统一管理这些响应请求程序的。
daemons目前有两种基本的模式,分别是stand alone与super daemon两种方式:
a、stand alone: 从字面意思来看,stand alone就是独立启动的意思,也就是说,该daemon启动之后就直接常驻在内存中,虽然会一直占用系统的资源,但最大的优点就是,它是一直启动的,所以当有请求时,它就会很快速地发出响应。常用daemon的网络服务如常见的httpd。
b、super daemon:相对stand alone来说,这种服务是藉由统一的一个daemon负责调用该服务。这个统一负责的daemon就是inet服务。不过,在后来的Linux套件中,则是使用xinet设定。我们这里以Mandrake的xinet为例进行说明。当出现网络的服务请求时,该请求会先送给xinet服务,然后xinet根据该网络请求送来的数据包内容(该内容会记录IP与端口信息)将数据包送给实际运作的服务,相应服务这时才会启动。最常见的就是ftp网络服务。这种方式最大的优点就是,当没有数据包来的时候,该服务不会一直占据系统资源(该服务会在睡眠状态),但是相对的,它的反应时间会比较慢,因为要花费一段时间去唤醒该服务。一般super daemon还分为两种形式,multi_threaded——一次可以服务多个程序,不需要等待,single_threaded——一次只能服务一个程序,需要等待。
具体要将某个服务设置成stand alone或者super daemon就需要根据主机具体的用途和机器负载来确定了。
其实分析一下就可以发现,xinet就是一个stand alone,它要常驻内存,收到服务请求后就去调用相应的处理程序。
2、注意细节
/etc/services文件中记录的有服务及其对应的端口号,xinet就是根据接收到的请求的端口号来判断调用相应服务的。
出于命名习惯,linux的服务名称后面经常加一个d,比如sshd,atd,crond等,表明这是一个daemon程序。
3、daemon的启动文件
a、stand alone:属于此类的服务都放在/etc/init.d目录下,比如ssh服务,如果要开启它,可以使用/etc/init.d/ssh start或者service ssh start.
b、super daemon:这个服务其实就是xinet或inet。上面已经提到,xinet也是一个daemon,它是stand alone启动的,也就是说,它会一直监听大家的请求,所以xinet的启动脚本写在/etc/init.d/xinetd这个脚本里,而挂在这个daemon里的服务的设定项是写在/etc/xinetd.conf 与 /etc/xinetd.d/目录下的任何文件。
阅读(1899) | 评论(0) | 转发(0) |