| 本文写于 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)
 
 |