分类: LINUX
2015-07-11 11:42:07
daemon=service
18.1.1daemon的主要分类
如果依据daemon的启动与管理方式来区分,基本上,可以将daemon分为可独立启动的stand alone,与通过一个super daemon来统一管理的服务这两大类
stand_alone:此daemon可以自行单独启动服务,不必通过其他机制的管理;daemon启动并加载到内存后就一直占用内存与系统支援。最大的优点就是:因为是一直存在内存内持续的提供服务,因此对于发生客户端的请求时,stand alone的daemon响应速度较快,典型的有www、ftp、dns;
Super daemon:一个特殊的daemon来统一管理,这种服务的启动方式是通过一个统一的daemon来负责唤起服务。这个特殊的daemon就被成为super daemon。早期的super daemon是inetd,后来则被xinetd所替代。这种服务当没有客户端请求时,各项服务都是未启动情况,等到有来自客户端的请求时,super daemon才唤醒对应的服务。当客户端的请求结束后,被唤醒的这个服务也会关闭并释放系统资源。这种机制的优点是super daemon负责唤醒各项服务,因此super daemon可以具有安全控制的机制,就是类似网络防火墙的功能,由于在客户端连接结束后就关闭,因此不会一直占用系统资源。缺点是,因为是客户端连接时super daemon才唤醒服务,因此响应较慢,常见的super daemon所管理的服务例如telnet。
个别窗口负责单一服务的stand alone
统一窗口负责各种业务的super daemon
针对super daemon的处理模式有两种,分别是
multi-threaded(多线程),一个服务同时会负责好介个进程
single-threaded(单线程),排队处理。
daemon工作形态类型
signal-control:这种daemon是通过信号来管理的,只要有任何客户端的请求进来,他就会立即启动去处理。例如打印服务(cupsd)
interval-control:这种daemon则主要是每个一段时间就主动去执行某项工作,所以,你要做的是在配置文件指定服务要进行的时间与工作,该服务在指定的时间才会去完成工作,计划任务atd和crond就属于这类的daemon(每分钟检测一次配置文件)
daemon的启动脚本与启动方式
为了管理方便,所以通常distribution都会记录每一个daemon启动后所取得进程的PID并放置在/var/run这个目录下
/etc/init.d/*:大部分服务启动脚本放置处,系统上几乎所有的服务启动脚本都放置在这里,事实上这是公认目录。我的RHEL6.4实际上放置在/etc/rc.d/init.d/中,不过还是有连接文件到/etc/init.d/的
[root@RHEL6 etc]# pwd /etc [root@RHEL6 etc]# ll | grep ^l lrwxrwxrwx. 1 root root 22 Mar 22 17:41 grub.conf -> ../boot/grub/grub.conf lrwxrwxrwx. 1 root root 11 Mar 22 17:35 init.d -> rc.d/init.d #init.d是一个连接文件,源文件是rc.d/init.d这个目录 lrwxrwxrwx. 1 root root 7 Mar 22 17:37 rc -> rc.d/rc lrwxrwxrwx. 1 root root 10 Mar 22 17:37 rc0.d -> rc.d/rc0.d(表示rc0.d连接到了rc.d/rc0.d,而rc.d/rc0.d才是物理文件) lrwxrwxrwx. 1 root root 10 Mar 22 17:37 rc1.d -> rc.d/rc1.d lrwxrwxrwx. 1 root root 10 Mar 22 17:37 rc2.d -> rc.d/rc2.d lrwxrwxrwx. 1 root root 10 Mar 22 17:37 rc3.d -> rc.d/rc3.d lrwxrwxrwx. 1 root root 10 Mar 22 17:37 rc4.d -> rc.d/rc4.d lrwxrwxrwx. 1 root root 10 Mar 22 17:37 rc5.d -> rc.d/rc5.d lrwxrwxrwx. 1 root root 10 Mar 22 17:37 rc6.d -> rc.d/rc6.d lrwxrwxrwx. 1 root root 13 Mar 22 17:37 rc.local -> rc.d/rc.local lrwxrwxrwx. 1 root root 15 Mar 22 17:37 rc.sysinit -> rc.d/rc.sysinit lrwxrwxrwx. 1 root root 14 Mar 22 17:37 system-release -> redhat-release |
/etc/sysconfig/*:各服务的初始化环境配置文件,几乎所有的服务都会将初始化(什么是初始化,我理解为最起初的,默认的)的一些参数设置写入到这个目录下。
/etc/xinetd.conf,/etc/xinetd.d:super daemon配置文件,super maemon的主要配置文件(其实是默认值)为/etc/xinetd.conf,super daemon只是一个统一管理的机制,它所管理的其他daemon的设置则写在/etc/xinetd.d/*里面,我的RHEL6.4安装时使用server基本安装,没有/etc/xinetd.conf文件(find / -name xinetd.conf也没有找到),且/etc/xinetd.d/目录下只有rsync一个文件。
/var/lib/*:各服务产生的数据库,一些产生数据的服务都会将它的数据写入到/var/lib/这个目录中,例如数据库管理系统MySQL的数据库默认就是写入/var/lib/mysql这个目录下
/var/run/*:各服务的进程的PID记录处,kill可以使用信号(signal)来管理进程,既然daemon是进程,当然也可以利用kill或killall来管理。不过为了担心管理时影响其他进程,因此daemon通常会将自己的PID记录一份到/var/run当中。
service –status-all 将系统中所有的stand alone的服务状态全部列出来。