利用Hyperic调用Python实现进程守护

yipeiwu_com5年前Python基础

利用Hyperic调用Python,实现进程守护,供大家参考,具体内容如下

调用操作系统方法获取进程信息,判断进程是否存在,Linux和Windows均支持,区别在于获取进程信息和启动进程的方法不同。

代码如下:

#!/usr/bin/python
#-*- coding:utf-8 -*-
 
"""
名称:进程检查脚本
作者:wjzhu
时间:2014-06-30
功能:根据进程名称,判断进程是否存在,执行相应操作
参数:p_name:进程名称|p_path:进程启动路径
返回值:0:进程存在,正常退出|1:进程不存在,执行命令后,进程存在|2:其他异常情况
 
update:2014-07-29 启动进程前调用os.chdir()方法,改变当前工作目录,解决部分进程启动时依赖工作目录问题
 
"""
 
import os
import sys
 
#初始化进程名称和命令路径
 
#使用参数方式传递程序名称和程序路径
#p_name = sys.argv[1]
#p_path = sys.argv[2]
 
#Linux
p_name = "redis"
p_path = "/usr/local/redis-2.8.11/src/redis-server/usr/local/redis-2.8.11/redis.conf"
 
#Windows
#p_name = "filezilla.exe"
#p_path = "C:\\Program Files (x86)\\FileZilla FTP Client\\filezilla.exe"
 
 
 
#Linux平台调用ps命令/Win平台调用tasklist命令,判断进程是否存在,传入进程名称,返回为查询得到的进程个数
def process_exit(process_name):
  #Linux
  p_checkresp = os.popen('ps aux | grep "' + process_name + '" | grep -v grep').readlines()
 
  #Windows,为避免进程名称被截断,输出格式为csv,使用tasklist /fo csv
  #p_checkresp = os.popen('tasklist /fo csv | find "' + process_name + '"').readlines()
  return len(p_checkresp)
 
#Linx平台调用os.system方法启动命令/Win平台调用os.startfile方法启动命令,传入命令路径,无返回值
def process_exec(process_path):
  #将工作目录切换到启动脚本所在目录,解决部分进程启动时依赖工作目录问题
  os.chdir(os.path.dirname(process_path))
 
  #Linxu
  os.system(process_path)
 
  #Windows
  #os.startfile(process_path)
 
#主函数
if __name__ == '__main__':
 
  #查询进程个数大于1,返回0,不做任何操作,退出
  if process_exit(p_name) >= 1:
    print 0
    sys.exit(0)
     
  #查询进程个数等于0
  elif process_exit(p_name) == 0:
    #执行启动命令
    process_exec(p_path)
    #查询进程个数大于1,返回1,启动成功,退出
    if process_exit(p_name) >= 1:
      print 1
      sys.exit(0)
    #启动失败,返回2,退出
    else:
      print 2
      sys.exit(0)
       
  #其他问题,返回2,退出
  else:
    print 2
    sys.exit(0)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

非递归的输出1-N的全排列实例(推荐)

网易游戏笔试题算法题之一,可以用C++,Java,Python,由于Python代码量较小,于是我选择Python语言。 算法总体思路是从1,2,3……N这个排列开始,一直计算下一个排列...

python定时关机小脚本

本文实例为大家分享了python定时关机的具体代码,供大家参考,具体内容如下 # coding: utf-8 import sys import os import time r...

Python实现在线程里运行scrapy的方法

本文实例讲述了Python实现在线程里运行scrapy的方法。分享给大家供大家参考。具体如下: 如果你希望在一个写好的程序里调用scrapy,就可以通过下面的代码,让scrapy运行在一...

python下载微信公众号相关文章

python下载微信公众号相关文章

本文实例为大家分享了python下载微信公众号相关文章的具体代码,供大家参考,具体内容如下 目的:从零开始学自动化测试公众号中下载“pytest"一系列文档 1、搜索微信号文章关键字搜索...

python+PyQT实现系统桌面时钟

用Python + PyQT写的一个系统桌面时钟,刚学习Python,写的比较简陋,但是基本的功能还可以。 功能: ①窗体在应用程序最上层,不用但是打开其他应用后看不到时间 ②左键双击全...