我有一些守护进程使用 PID 文件来防止并行执行我的程序。我已经设置了一个信号处理程序来捕获 SIGTERM 并进行必要的清理,包括 PID 文件。当我使用“kill -s SIGTERM #PID”进行测试时,这非常有效。但是,当我重新启动服务器时,PID 文件仍然存在,阻止守护进程启动。据我了解,当服务器关闭时,SIGTERM 会发送到所有进程。我是否应该在我的守护程序中捕获另一个信号(SIGINT、SIGQUIT?)?
最佳答案
在你的pid文件上使用flock
(或lockf
),如果成功,你可以重写pid文件并继续。
This SO answer有一个很好的例子说明如何做到这一点。
关于python - 服务器重启后守护进程的 PID 文件挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2134732/