启动系统后,我的脚本从crontab作为守护进程启动。它工作一段时间并暂停/挂起而没有响应。之后我无法像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
解决这个问题的任何想法都会很棒!
修改
似乎我发现了我的问题。当它停止时我无法重启守护进程因为整个机制想要在第一个位置停止我的守护进程而它不能因为它已经停止了。然后我发现我的脚本中存在一个问题,它使整个运行只持续几秒钟并崩溃。无论如何,谢谢你的每一个答案!
答案 0 :(得分:1)
我不能说为什么你的脚本挂起 - 但显然它的过程仍然存在,所以清理工作永远不会发生。您可以通过检查/home/pi/testdaemon.pid
来强制清理,验证它包含的进程ID是否确实仍在运行,从而终止该进程(如果需要,使用-9),并且为了完整性,删除{{1 }}
之后,您应该能够重新运行脚本。但是,核心问题是为什么你的脚本“挂起而没有响应” - 你只是没有给我们任何信息来帮助你调试那个问题(也许一个单独的问题更合适...)这些只是你可以采取的“紧急步骤”让你再次运行你的脚本,但当然他们没有做任何事情来评估或解决问题的根本原因!