Linux守护进程及作用详解
和 Windows 系统一样,Linux 服务器在启动时也需要启动很多系统服务,它们向本地或网络用户提供了 Linux 的系统功能接口,直接面向应用程序和用户,而提供这些服务的程序就是由运行在后台的守护进程来执行的。 守护进程是生存期很长的一种进程,它们独立于控制终端,并且周期性地执行某种任务或等待处理某些发生的事件,多数的守护进程都伴随着 Linux 系统启动而启动,关闭而关闭。 Linux 系统中有很多守护进程,大多数服务器也都是用守护进程来实现的。不仅如此,某些守护进程还协助完成了很多系统任务,其中就包括负责计划任务的 atd 和 crond 服务。 Linux 系统中,选择运行哪些守护进程,要根据具体需求来决定,通过以 root 身份执行 ntsysv 命令,可以查看当前系统中拥有哪些守护进程,或者说能够提供哪些服务。 实际上,按照启动和管理方式的不同,守护进程又可细分为 stand alone 和 xinetd 两类。 所谓 stand alone,指的是可独立启动的守护进程,这种类型的守护进程以下 2 大特点:
至于 xinetd,则是一种比较新型的守护进程,它由一个统一的 stand alone 守护进程来负责唤起,这个特殊的守护进程被称为 super daemon。 之所以会引入这种机制,是因为 stand alone 会一直占用内存和系统资源,因此有人就提出了按需分配的这种概念。换句话说,当没有客户端要求的时候,xinetd 类型的守护进程属于未启动状态,待有客户端要求服务时,super daemon 才会唤醒指定的 xinetd 守护进程。 很明显,相比 stand alone 类型,xinetd 类型守护进程的缺点就是不能及时相应,但是优先很明显,其一,由于 super daemon 负责唤醒各项服务,因此可以赋予 super daemon 安全管控的机制,这就类似网络防火墙的功能了;其二,也是它的设置初衷,即客户端的联机结束后就关闭,不会一直占用系统资源。 大多数 Linux 发行版会将所有 stand alond 守护进程的启动脚本都放置在 /etc/init.d/ 目录下,这是一个公认的目录,而 CentOS 实际上放在了 /etc/rc.d/init.d/ 目录,/etc/init.d 只是它的一个符号连接。 直接执行某个 stand alone 守护进程的启动脚本,会显示该启动脚本的用法。以 /etc/init.d/atd 这个脚本来说,执行它会有下面的用法提示:
[root@localhost ~]# /etc/init.d/atd xinetd 守护进程的配置文件放置在 /etc/xinetd.d/ 目录下和 /etc/xinetd.conf 文件中。其中,xinetd.conf 文件中的内容一般不用关心,而 /etc/xinetd.d 中的每个文件代表一个独立的 xinetd 守护进程。 比如说,rsync 的配置内容如下所示:
[root@localhost ~]# cat /etc/xinetd.d/rsync 虽然知道了如何开启一个 xinetd 守护进程,但是当客户请求 rsync 服务的时候,xinetd 怎么就知道启动 /usr/bin/rsync 这个程序呢?答案在 /etc/services 文件中,在此文件中我们可以找到类似下面的内容:
...... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |