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


Posted in Python onJanuary 02, 2018

利用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 相关文章推荐
python 提取文件的小程序
Jul 29 Python
跟老齐学Python之集合(set)
Sep 24 Python
python类继承用法实例分析
May 27 Python
python清除字符串里非字母字符的方法
Jul 02 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
pytorch 调整某一维度数据顺序的方法
Dec 08 Python
对python指数、幂数拟合curve_fit详解
Dec 29 Python
详解Python Matplot中文显示完美解决方案
Mar 07 Python
python 字符串格式化的示例
Sep 21 Python
Python collections.deque双边队列原理详解
Oct 05 Python
python爬虫框架feapde的使用简介
Apr 20 Python
python全面解析接口返回数据
Feb 12 Python
python实现TF-IDF算法解析
Jan 02 #Python
python实现xlsx文件分析详解
Jan 02 #Python
Python实现KNN邻近算法
Jan 28 #Python
Python+matplotlib+numpy绘制精美的条形统计图
Jan 02 #Python
基于Python实现的ID3决策树功能示例
Jan 02 #Python
python实现基于SVM手写数字识别功能
May 27 #Python
Python中字典的浅拷贝与深拷贝用法实例分析
Jan 02 #Python
You might like
Memcached常用命令以及使用说明详解
2013/06/27 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
php引用传值实例详解学习
2013/11/06 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
2014/04/08 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
JavaScript通过字符串调用函数的实现方法
2015/03/18 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
详解JS函数防抖
2020/06/05 Javascript
Python 调用Java实例详解
2017/06/02 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
2019/04/29 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
使用python把xmind转换成excel测试用例的实现代码
2020/10/12 Python
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
PHP数据运算类型都有哪些
2013/11/05 面试题
Linux机考试题
2015/07/17 面试题
说明书范文
2014/05/07 职场文书
社区春季防火方案
2014/06/02 职场文书
应届生面试求职信
2014/07/02 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年人民警察入党思想汇报
2014/10/12 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
Oracle笔记
2021/04/05 Oracle
Python装饰器详细介绍
2022/03/25 Python