myalert.pyPython的守护程序:检查有一个守护进程运行在任何时候都
from daemon import Daemon
import os, time, sys
class alertDaemon(Daemon):
def run(self):
while True:
time.sleep(1)
if __name__ == "__main__":
alert_pid = '/tmp/ex.pid'
# if pid doesnt exists run
if os.path.isfile(alert_pid): # is this check enough?
sys.exit(0)
daemon = alertDaemon(alert_pid)
daemon.start()
鉴于没有其他程序或用户将创建pid文件:
1)是否有其中pid的情况下,还没有存在的守护进程仍在运行?
2)有没有pid确实存在但守护进程没有运行的情况?
因为如果对上述至少一个问题的答案是肯定的,那么只要检查pid文件的存在是不够的,如果我的目标有一个守护进程始终运行。问:如果我必须检查过程,那么我希望避免像系统调用ps -ef和grep这样的脚本名称。有没有这样做的标准方式?
注:脚本,myalert.py,将是一个cronjob
可能试图侦听某个端口,然后如果第二个守护进程启动,该端口将不可用。 – Hacketo 2014-09-30 14:25:16
你正在使用哪个'daemon'库? – dano 2014-09-30 14:54:15
@ dano4来自http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/ – ealeon 2014-09-30 14:59:36