什么是守护进程?

什么是守护进程?

我听到很多关于在我的 Ubuntu 计算机上运行的守护进程的讨论 - 它们是什么?

答案1

简而言之,守护进程是后台进程

守护进程可以是在后台运行的普通程序,但是大多数是通过启动进程、分叉进程并退出父进程来创建的。

派生进程意味着创建该进程的精确副本。如果真正的父母立即终止,现在是在里面进程位于/sbin/init,这是每个类 Unix 操作系统上启动的第一个进程。现在,该进程被称为守护进程,它没有与之关联的 TTY。

以下是 Python 中守护进程的一个示例:

import sys, os, time

pid = os.fork()

# there now exist two processes
if pid > 0: # If this is the parent,
    sys.exit(0) # quit.

# this is the background part:
time.sleep(5)
print "Hello, World!"

严格来说,它还不是。您还必须更改当前工作目录,将标准输入和输出预测为日志文件等等。您可以在这篇维基百科文章

如果您运行该示例,您会注意到,两秒钟后它会打印出来,即使您在命令行上启动的进程已终止。此进程的副本现在由 init 运行。

答案2

在多任务计算机操作系统中,守护进程是一种作为后台进程运行的计算机程序,而不是由交互式用户直接控制。传统上,守护进程的进程名称以字母 d 结尾,以澄清该进程实际上是守护进程,并区分守护进程和普通计算机程序。例如,syslogd 是实现系统日志记录功能的守护进程,sshd 是为传入 SSH 连接提供服务的守护进程。

正如你所看到的守护进程的层

相关内容