这个奇怪的术语是 Unix 历史的遗物,但今天仍在使用守护进程。 该术语与“服务”的概念同义,“服务”是一项连续运行的任务,通常无需用户交互。
有几个常见的守护程序示例,即使您不需要确切地知道它们是如何工作的,至少能够识别它们也是有用的。
什么是守护进程?
守护程序或磁盘和执行监视器是作为后台进程而不是交互式进程运行的程序。 守护进程在网络工具和系统管理任务中很常见。 您可以通过向它们发送信号来控制一些守护进程。
你如何发音“守护进程”?
尽管看起来,daemon这个词通常与“demon”这个词发音相同。 请放心,这与撒旦仪式无关。 事实上,这个名字最终源于希腊神话和指导精神的概念,在后台不知疲倦地工作。 从这个意义上说,这是一个非常贴切的名字!
守护进程如何工作?
在 Unix 系统上,术语守护进程经常与术语后台进程互换使用。 换句话说,它是一个已从任何 shell 中分离出来并继续以非交互方式运行的进程。 一个真正的守护进程也应该将自己指定为特殊的子进程 在里面 具有特殊进程 ID 号 1 的进程。
隔离守护进程所涉及的其他典型任务包括:
- 通过从其环境中删除不必要的变量来沙箱化。
- 将根目录 (/) 设置为进程的当前工作目录。
- 将输入、输出和错误的文件描述重定向到日志文件或 /dev/null.
其他系统,例如 Windows 和 macOS,也使用守护进程。 对于 Windows,服务是最接近的等价物。
什么是一些常见的守护进程?
克朗 (crond) 是一个按计划执行其他程序的守护进程。 大多数 Unix 系统将其配置为在启动时自动运行。 它每分钟唤醒一次,检查配置文件,并执行设置为在该分钟内运行的任何命令。 Cron 足够聪明,可以在 crontab 文件更改时对其做出反应。 您不需要自己重新启动它。
Web 服务器,例如 Apache的 httpd,通常作为守护进程运行——这就是“d”代表的意思。 这 Apache 守护进程通过创建一个子进程池来分担负载来处理传入的请求。 您可以使用帮助程序,例如 apachectl,以便更轻松地控制 httpd 守护程序本身。
最后, sshd 是另一种常见的 example 守护进程,这次是处理 SSH 连接的守护进程。 同样,它通常从引导开始并无限期地保持运行,依赖于某些操作的信号。 为了 exampleSIGHUP 信号会导致 sshd 重新执行自身,并在执行此操作时重新加载其配置文件。
守护进程是重要的服务提供者
守护程序持续运行,执行重要任务以保持计算机运行。 当计算机需要充当服务器,代表其他客户端时,它们通常会涉及。
守护进程是 Linux 服务器的重要组成部分。 如果您不熟悉设置服务器,请查看我们的入门提示。