简介
编辑在多任务计算机操作系统中,守护进程(/ˈdiːmən/ 或 /ˈdeɪmən/)是作为后台进程运行的计算机程序,而不是在交互式用户的直接控制下。传统上,守护进程的进程名称以字母 d 结尾,以澄清该进程实际上是一个守护进程,以及区分守护进程和普通计算机程序。例如,syslogd 是一个实现系统日志功能的守护进程,而 sshd 是一个为传入的 SSH 连接提供服务的守护进程。
在 Unix 环境中,守护进程的父进程通常(但不总是)是 init 进程。 守护进程通常是由一个进程派生一个子进程然后立即退出,从而导致 init 采用子进程,或者由 init 进程直接启动守护进程来创建的。
此外,通过分叉和退出启动的守护进程通常必须执行其他操作,例如将进程与任何控制终端 (tty) 分离。 此类过程通常在各种便利例程中实现,例如 Unix 中的 daemon(3)。
系统通常会在启动时启动守护进程,这些守护进程将通过执行某些任务来响应网络请求、硬件活动或其他程序。 诸如 cron 之类的守护进程也可以在预定的时间执行定义的任务。
术语
编辑该术语是由麻省理工学院 MAC 项目的程序员创造的。 根据 1963 年参与 MAC 项目的 Fernando J. Corbató 的说法,他的团队是第 一个使用守护进程这个词的人,灵感来自麦克斯韦妖,这是物理学和热力学中帮助分选分子的虚构xxx,他说,我们异想天开地开始使用守护进程这个词来描述不知疲倦地执行系统杂务的后台进程。 Unix 系统继承了这个术语。
在一般意义上,守护进程是恶魔一词的旧形式,来自希腊语 δαίμων。 在 Unix 系统管理手册中,Evi Nemeth 陈述了以下关于守护进程的内容。
古希腊人的个人守护神概念类似于现代守护天使的概念——eudaemonia 是一种被善良的精神帮助或保护的状态。 通常,UNIX 系统似乎充斥着守护进程。
神话象征主义的进一步特征是,守护进程是不可见但始终存在并按其意志行事的东西。
守护进程的替代术语是服务(在 Windows 中使用,从 Windows NT 开始,后来也在 Linux 中使用)、启动任务 (IBM z/OS) 和幽灵作业 (XDS UTS)。
在该术语被用于计算机之后,它被合理化为磁盘和执行xxx器的反义词。
连接到计算机网络的守护进程是网络服务的示例。
实施
编辑类 Unix 系统
从严格的技术意义上讲,当类 Unix 系统进程的父进程终止并且守护进程被分配 init 进程(进程号 1)作为其父进程并且没有控制终端时,类 Unix 系统进程是一个守护进程。 然而,更一般地,守护进程可以是任何后台进程,无论是否是 init 进程的子进程。
在类 Unix 系统上,当进程从命令行或启动脚本(如 init 脚本或 SystemStarter 脚本)启动时,进程成为守护进程的常用方法包括:
- 可选择从环境中删除不必要的变量。
- 通过分叉和退出(在分叉的父部分中)作为后台任务执行。 这允许守护进程的父进程(shell 或启动进程)接收退出通知并继续其正常执行。
- 从调用会话中分离,通常通过单个操作 setsid() 完成:
- 脱离控制终端。
- 创建一个新会话并成为该会话的会话负责人。
- 成为流程组领导。
- 如果守护进程想确保它不会获取
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/203874/