本文写于 2014年。 当前项目,进程守护一般使用 Supervisor。
|
需求说明
利用Hyperic调用Python,实现进程守护。
调用操作系统方法获取进程信息,判断进程是否存在。
Linux和Windows均支持,区别在于获取进程信息和启动进程的方法不同。
需求实现
代码如下:
""" 名称:进程检查脚本 作者:wjzhu 时间:2014-06-30 功能:根据进程名称,判断进程是否存在,执行相应操作 参数:p_name:进程名称|p_path:进程启动路径 返回值:0:进程存在,正常退出|1:进程不存在,执行命令后,进程存在|2:其他异常情况
update:2014-07-29 启动进程前调用os.chdir()方法,改变当前工作目录,解决部分进程启动时依赖工作目录问题
"""
import os import sys
p_name = "redis" p_path = "/usr/local/redis-2.8.11/src/redis-server/usr/local/redis-2.8.11/redis.conf"
def process_exit(process_name): p_checkresp = os.popen('ps aux | grep "' + process_name + '" | grep -v grep').readlines()
return len(p_checkresp)
def process_exec(process_path): os.chdir(os.path.dirname(process_path))
os.system(process_path)
if __name__ == '__main__':
if process_exit(p_name) >= 1: print 0 sys.exit(0) elif process_exit(p_name) == 0: process_exec(p_path) if process_exit(p_name) >= 1: print 1 sys.exit(0) else: print 2 sys.exit(0) else: print 2 sys.exit(0)
|