Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:守护进程与无限周期_Python_Unix_Daemon - Fatal编程技术网

Python:守护进程与无限周期

Python:守护进程与无限周期,python,unix,daemon,Python,Unix,Daemon,我有一个问题:创建python守护程序脚本的方法和以下方法有什么区别: while(True): do_something() sleep(10) 对于一个进程来说,作为一个守护进程不仅仅意味着包含一个无限循环。当其父进程(通常是shell)终止时,它不应该终止。它应该支持停止、启动和重新启动的接口(当其程序文件使用start | stop | restart参数执行时)。你提到的例子就是这样做的 顺便说一句,我列出的守护进程应该做的事情并不完整,它只是表明存在这样的事情。守护进程

我有一个问题:创建python守护程序脚本的方法和以下方法有什么区别:

while(True):
   do_something()
   sleep(10)

对于一个进程来说,作为一个守护进程不仅仅意味着包含一个无限循环。当其父进程(通常是shell)终止时,它不应该终止。它应该支持停止、启动和重新启动的接口(当其程序文件使用start | stop | restart参数执行时)。你提到的例子就是这样做的


顺便说一句,我列出的守护进程应该做的事情并不完整,它只是表明存在这样的事情。

守护进程程序通常支持一些系统信号来执行重启/停止/启动。这些参数通常在/etc/init.d/中的脚本中使用,以将这些信号发送到正确的进程id(pid)。但现在,守护进程可能不那么流行了,因为
systemd
已经存在,而且它在正确处理进程方面做得很好,所以不需要像双叉(double fork)这样的魔术(它使守护进程在后台运行)。@spinus,关于信号的说法是正确的。至于systemd,我仍然不熟悉它,因为我喜欢的发行版没有使用它。无论如何,好消息是,总有一天双叉将是不必要的。:-)@埃利奥:有一个暂时的解决办法。Systemd可以作为用户进程工作,因此您只能管理特定用户/类的进程,而不能将其与系统的其余部分集成(但对我来说,它还不能正常工作,他们现在正在实现这一点)。有一个supervisord程序,我用它来部署东西(对于用户进程来说,它有点像糟糕的systemd)——所以我对旧的deamons使用initd,对于非分叉程序,我使用supervisord(也有circus,但对我来说,supervisord更适合)。试试看。