守护进程(Daemon)是一种运行在后台的一种特殊的进程,它独立于
控制终端并且周期性的执行某种任务或等待处理某些发生的事件。
守护进程的作用:
Linux 服务器在启动时需要启动很多系统服务(其实 Windows 也这样),它们向
本地或网络用户提供了 Linux 的系统功能接口,直接面向应用程序和用户。提供
这些服务的程序是由运行在后台的守护进程(daemons)来执行的。
它们常常伴随着 Linux 系统启动时启动,关闭时关闭。linux 系统有很多守护进
程,大多数服务器都是用守护进程实现的。另外,某些守护进程还协助完成了很
多系统任务,比如负责计划任务的 atd 和 crond、负责打印的 lqd 等。
实际上守护进程也是有分类的,可以按照它的启动和管理方式来区分,分为独立
启动的 stand alone 和 xinetd 两类。
所谓的 stand alone,从字面上的意思来看就是“独立”的含义。这种类型的
守护进程有两大特点,一是可以自行启动运行而不需要利用系统其他机制来管理,
二是启动之后会一直占用内存与系统资源。因而这种守护进程拥有了一个非常突
出的优点:响应最快。stand alone 守护进程非常多,常见的 apache、mysql 等
都是。
至于 xinetd 则是一种比较新型的守护进程。它由一个统一的 stand alone 守
护进程来负责唤起。这个特殊的守护进程还有一个好听的名字——super
daemon。之所以会引入这种机制,就是因为 stand alone 会一直占用内存和资
源显得很浪费。所以一些喜欢精打细算的人就提出来按需分配这种概念。也就是
说,当没有客户端要求的时候,xinetd 类型的守护进程都是未启动,待有客户端
要求服务时,super daemon 才会去唤醒具体的 xinetd 守护进程。但是这种按需
分配的机制的致命缺点就是不能及时响应。但是优点也非常鲜明。其一,由于
super daemon 负责唤醒各项服务,因此可以赋予 super daemon 安全管控的机
制,这就类似网络防火墙的功能了;其二,也是它的设计初衷,即客户端的联机
结束后就关闭,不会一直占用系统资源。
大多数 Linux 发行版会将所有 stand alone 守护进程的启动脚本都放置在
/etc/init.d/ 目 录 下 , 这 是 一 个 公 认 的 目 录 。 而 CentOS 实 际 上 是 放 在 了
/etc/rc.d/init.d/目录下了,而/etc/init.d 只是它的一个符号连接。大家在记忆的时
候,只要记住公认目录即可,那些发行版自己耍的小聪明就不要理会了。