利用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 15 Python
python引入导入自定义模块和外部文件的实例
Jul 24 Python
python 实现一个贴吧图片爬虫的示例
Oct 12 Python
python 自定义异常和异常捕捉的方法
Oct 18 Python
在scrapy中使用phantomJS实现异步爬取的方法
Dec 17 Python
Python函数和模块的使用总结
May 20 Python
python爬取盘搜的有效链接实现代码
Jul 20 Python
python根据多个文件名批量查找文件
Aug 13 Python
Python随机函数库random的使用方法详解
Aug 21 Python
关于tf.TFRecordReader()函数的用法解析
Feb 17 Python
Python logging模块进行封装实现原理解析
Aug 07 Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 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
PHPMailer邮件发送的实现代码
2013/05/04 PHP
php数组编码转换示例详解
2014/03/11 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
Javascript中的getUTCHours()方法使用详解
2015/06/10 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
vue-router的hooks用法详解
2020/06/08 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
解决antd Form 表单校验方法无响应的问题
2020/10/27 Javascript
js实现缓动动画
2020/11/25 Javascript
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
Python3.8中使用f-strings调试
2019/05/22 Python
pygame实现非图片按钮效果
2019/10/29 Python
python 正则表达式参数替换实例详解
2020/01/17 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
2020/07/01 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
python中yield的用法详解
2021/01/13 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
奥地利网上书店:Weltbild
2017/07/14 全球购物
PHP开发的一般流程
2013/08/13 面试题
EJB实例的生命周期
2016/10/28 面试题
铲车司机岗位职责
2014/03/15 职场文书
最常使用的求职信
2014/05/25 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
学生逃课检讨书
2015/02/17 职场文书
2015年高校教师个人工作总结
2015/05/25 职场文书
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js