守护程序 PID 锁定错误

Daemon PID lock error

系统启动后,我的脚本从 crontab 作为守护进程启动。它工作了一段时间 suspends/hangs 没有反应。在那之后我不能 运行 它像 sudo python script.py restart,因为它说: File "/usr/lib/pymodules/python2.7/daemon/runner.py", line 149, in _stop "PID file %(pidfile_path)r not locked" % vars()) daemon.runner.DaemonRunnerStopFailureError: PID file '/home/pi/testdaemon.pid' not locked

在脚本的 init 中有:

def __init__(self):
  self.stdin_path = '/dev/null'
  self.stdout_path = '/dev/null'
  self.stderr_path = '/dev/null'
  self.pidfile_path = '/home/pi/testdaemon.pid'
  self.pidfile_timeout = 5

任何解决这个问题的想法都会很棒!

编辑:

看来我找到问题了。当它停止时我无法重新启动守护程序,因为整个机制首先想要停止我的守护程序,但它不能,因为它已经停止了。然后我发现我的脚本中有一个问题,导致整个 运行 只持续了几秒钟就崩溃了。无论如何,谢谢你的每一个答案!

我不知道为什么 您的脚本挂起 -- 但显然它的进程仍然存在,所以清理永远不会发生。您可以通过检查 /home/pi/testdaemon.pid 来强制清理,验证它包含的进程 ID 确实仍然是 运行ning,终止该进程(如果需要,使用 -9),并且只是为了完整性, 删除 /home/pi/testdaemon.pid.

之后,您应该可以重新运行您的脚本。然而,核心问题是,为什么 执行你的脚本 "hang without response" —— 而你只是没有给我们任何信息来帮助你调试 that 问题(也许一个单独的问题更合适)...这些只是 "emergency steps" 你可以让你再次 运行 你的脚本,但当然他们没有做任何评估或解决问题的根本原因!