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