利用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 flask 多对多表查询功能
Jun 25 Python
tensorflow创建变量以及根据名称查找变量
Mar 10 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
Jun 13 Python
python3中zip()函数使用详解
Jun 29 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
django 文件上传功能的相关实例代码(简单易懂)
Jan 22 Python
python实现猜数游戏
Mar 27 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
python实现图片转换成素描和漫画格式
Aug 19 Python
python代码实现备忘录案例讲解
Jul 26 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 和 XML: 使用expat函数(二)
2006/10/09 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
PHP自定义错误用法示例
2016/09/28 PHP
JS 有名函数表达式全面解析
2010/03/19 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
jquery结合CSS使用validate实现漂亮的验证
2015/01/29 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
浅析javascript的return语句
2015/12/15 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
python绘制双柱形图代码实例
2017/12/14 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
python调用支付宝支付接口流程
2019/08/15 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
个人评价范文分享
2014/01/11 职场文书
电大本科自我鉴定
2014/02/05 职场文书
实验室的标语
2014/06/20 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
大学生实习介绍信
2015/05/05 职场文书
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers