利用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实现一次创建多级目录的方法
May 15 Python
Python文件与文件夹常见基本操作总结
Sep 19 Python
django 按时间范围查询数据库实例代码
Feb 11 Python
在Python中使用gRPC的方法示例
Aug 08 Python
python3 读取Excel表格中的数据
Oct 16 Python
pyhanlp安装介绍和简单应用
Feb 22 Python
Pandas中Series和DataFrame的索引实现
Jun 27 Python
Python装饰器使用你可能不知道的几种姿势
Oct 25 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
Mar 30 Python
Python编写单元测试代码实例
Sep 10 Python
Python 多进程原理及实现
Dec 21 Python
用python对excel进行操作(读,写,修改)
Dec 25 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
PHP,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
JS获得一个对象的所有属性和方法实例
2017/02/21 Javascript
js中的闭包学习心得
2018/02/06 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
初试vue-cli使用HBuilderx打包app的坑
2019/07/17 Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
2020/08/13 Javascript
Python struct模块解析
2014/06/12 Python
python使用多线程不断刷新网页的方法
2015/03/31 Python
python中字典dict常用操作方法实例总结
2015/04/04 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
django-crontab 定时执行任务方法的实现
2019/09/06 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
python属于哪种语言
2020/08/16 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
浅谈css3中的前缀
2016/07/20 HTML / CSS
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
关于Assembly命名空间的三个面试题
2015/07/23 面试题
文史专业毕业生自荐信
2013/11/17 职场文书
优秀干部获奖感言
2014/01/31 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
淘宝客服工作职责
2014/07/11 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
2014年个人年终总结
2015/03/09 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
幼儿园2016年感恩节活动总结
2016/04/01 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
logback如何自定义日志存储
2021/08/30 Java/Android