守护进程
概念理解
守护进程是一个在后台运行并且不受任何终端控制的进程。Unix操作系统有很多典型的守护进程(其数目根据需要或20—50不等),它们在后台运行,执行不同的管理任务。
守护进程也称精灵进程(Daemon),是运⾏在后台的⼀种特殊进程。它独立于控制终端并且周期性地执行 某种任务或等待处理某些发生的事件。守护进程是⼀种很有用的进程。
Linux的⼤多数服务器就是⽤用守护进程实现的。比如,ftp服务器,ssh服务器,Web服务器httpd等。同时,守护进程完成许多系统任务。⽐如,作业规划进程crond等。
Linux系统启动时会启动很多系统服务进程,这些系统服务进程没有控制终端,不能直接和⽤户交互。其它进程 都是在用户登录或运行程序时创建,在运行结束或⽤户注销时终止,但系统服务进程(守护进程)不受用户登录 注销的影响,它们一直在运⾏行着。这种进程有⼀个名称叫守护进程(Daemon)。
守护进程没有控制终端,因此当某些情况发生时,不管是一般的报告性信息,还是需由管理员处理的紧急信息,都需要以某种方式输出。Syslog 函数就是输出这些信息的标准方法,它把信息发送给 syslogd 守护进程
查看守护进程
ps axj
命令查看系统中的进程。参数a
表示不仅列出当前⽤户的进程,也列出所有其他⽤户的进程,参数x
表示不仅列有控制终端的进程,也列出所有⽆控制终端的进程,参数j
表示列出与作业控制相关的信息。ps axj | more
- 找出守护进程
凡是TPGID⼀栏写着-1的都是没有控制终端的进程,也就是守护进程。 在COMMAND⼀列⽤[]括起来的名字表⽰内核线程,这些线程在内核⾥创建,没有⽤户空间代码,因此 没有程序文件名和命令行, 通常采⽤以k开头的名字,表⽰Kernel。init进程我们已经很熟悉了,udevd负责维护/dev目录下的设备⽂件,acpid负责电源管理,syslogd负责 维护/var/log下的⽇志文件可以看出,守护进程通常采⽤以d结尾的名字,表⽰Daemon。
特点:
守护进程最重要的特性是后台运行。
守护进程必须与其运行前的环境隔离开来(这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等),这些环境通常是守护进程从执行它的父进程(特别是shell)继承下来的。
守护进程的启动方式有其特殊之处。它可以在Linux系统启动时从启动脚本/etc/rc.d中启动,也可以由作业控制进程crond启动,还可以由用户终端(通常是shell)执行。