【发布时间】:2014-09-30 14:18:05
【问题描述】:
myalert.py
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
【问题讨论】:
-
可以尝试监听某个端口,然后如果启动第二个守护进程,该端口将不可用。
-
您使用的是哪个
daemon库?
标签: python daemon python-daemon