利用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 相关文章推荐
用smtplib和email封装python发送邮件模块类分享
Feb 17 Python
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
May 23 Python
Python爬虫天气预报实例详解(小白入门)
Jan 24 Python
python Tkinter版学生管理系统
Feb 20 Python
Python实现微信翻译机器人的方法
Aug 13 Python
Python 3.8正式发布,来尝鲜这些新特性吧
Oct 15 Python
Python单元测试与测试用例简析
Nov 09 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
Feb 04 Python
python下载卫星云图合成gif的方法示例
Feb 18 Python
初学者学习Python好还是Java好
May 26 Python
python 爬虫如何正确的使用cookie
Oct 27 Python
Python爬虫网络请求之代理服务器和动态Cookies
Apr 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
thinkphp循环结构用法实例
2014/11/24 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
js实现弹窗效果
2020/08/09 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
python迭代器实例简析
2014/09/25 Python
Python对象转JSON字符串的方法
2016/04/27 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
2020/04/19 Python
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
高中生毕业自我鉴定范文
2013/12/22 职场文书
计划生育标语
2014/06/23 职场文书
教师师德考核自我评价
2014/09/13 职场文书
原告离婚代理词
2015/05/23 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
父亲节感言
2015/08/03 职场文书
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
2021/06/29 Javascript