我听到很多关于在我的 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 运行。