linux守护进程


什么是守护进程daemon

回到顶部
daemon的意思就是守护神、恶魔!
linux系统后台运行着许多提供某种特定服务(service)的守护进程(daemons)。 因为守护进程肯定会提供某种服务,服务必须通过进程的形式提供,所以往往将服务和守护进程放在一起, 下面提到服务进程和守护进程其实是一个意思。 我们通过ps、pstree和top等命令观察系统进程的时候,会看到有些进程名后面会有一个字符d, 这大概率就是一个守护进程,d就是daemon的意思。 典型的系统守护进程有工作例程服务进程atd和crond、网络文件服务进程vsftpd、www服务进程httpd等。 并不是所有的系统守护进程名后面都必须有字符d,字符d只是开发者为了方便用户识别。

守护进程是在linux后台运行且不受任何终端控制的进程。
Unix操作系统后台运行着很多守护进程,执行不同的管理任务。
守护进程独立于所有的控制终端,守护进程从一个终端启动的情况下,同一个终端可能被其他的用户使用。 例如,用户从一个终端启动守护进程后退出,然后另外一个人也登录到这个终端。用户不希望后者在使用该终端的过程中,接收到守护进程的任何错误信息。 同样,由终端键入的任何信号(例如中断信号)也不应该影响先前在该终端启动的任何守护进程的运行。 虽然让服务器后台运行很容易(只要shell命令行以&结尾即可),但用户还应该做些工作,让程序本身能够自动进入后台,且不依赖于任何终端。
守护进程没有控制终端,因此当某些情况发生时,不管是一般的报告性信息,还是需由管理员处理的紧急信息,都需要以某种方式输出。 Syslog函数就是输出这些信息的标准方法,它把信息发送给syslogd守护进程。

首先,守护进程最重要的特性是后台运行。其次,守护进程必须与其运行前的环境隔离开来。 这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等。 这些环境通常是守护进程从执行它的父进程(特别是shell)继承下来的。最后,守护进程的启动方式有其特殊之处。 它可以在Linux系统启动时从启动脚本/etc/rc.d中启动,也可以由作业控制进程crond启动,还可以由用户终端(通常是shell)执行。
除了以上这些以外,守护进程与普通进程基本上没有什么区别。因此,编写守护进样实际上是把一个普通进程按照上述的守护进程的特性改造成为守护进程。

按照服务类型分为如下几个。
系统守护进程:syslogd、login、crond、at等。
网络守护进程:sendmail、httpd、xinetd等。
独立启动的守护进程:httpd、named、xinetd等。
被动守护进程(由xinetd启动):telnet、finger、ktalk等。

一般来说,Linux主机在开机启动后, 默认就会开启很多服务进程! 包括打印服务、工作排程服务、邮件管理服务等等; 那么这些服务是如何被启动的?他们的工作型态如何?

相关阅读:
c程序员创建守护进程的编程步骤: linux守护进程创建步骤
initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读