利用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增量循环删除MySQL表数据的方法
Sep 23 Python
python中子类调用父类函数的方法示例
Aug 18 Python
tensorflow: 查看 tensor详细数值方法
Jun 13 Python
Python读取excel指定列生成指定sql脚本的方法
Nov 28 Python
Python实现深度遍历和广度遍历的方法
Jan 22 Python
Python整数对象实现原理详解
Jul 01 Python
解决Python3下map函数的显示问题
Dec 04 Python
PyCharm如何导入python项目的方法
Feb 06 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
Apr 10 Python
Python如何在main中调用函数内的函数方式
Jun 01 Python
python程序需要编译吗
Jun 19 Python
python用Tkinter做自己的中文代码编辑器
Sep 07 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获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
php面向对象值单例模式
2016/05/03 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
textContent在Firefox下与innerText等效的属性
2007/05/12 Javascript
ext读取两种结构的xml的代码
2008/11/05 Javascript
javascript instanceof,typeof的区别
2010/03/24 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
2016/11/25 Javascript
Bootstrap源码解读网格系统(3)
2016/12/22 Javascript
jQuery仿写百度百科的目录树
2017/01/03 Javascript
layui分页效果实现代码
2017/05/19 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
bootstrap table服务端实现分页效果
2017/08/10 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
小程序分享模块超级详解(推荐)
2019/04/10 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
Python获取系统默认字符编码的方法
2015/06/04 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
Python tkinter label 更新方法
2018/10/11 Python
Python中的asyncio代码详解
2019/06/10 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
纽约手袋品牌:KARA
2018/03/18 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
最新销售员个人自荐信
2013/09/21 职场文书
怎样写好创业计划书的内容
2014/02/06 职场文书
夫妻吵架保证书
2015/05/08 职场文书
推普标语口号大全
2015/12/26 职场文书