利用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 splitlines使用技巧
Sep 06 Python
详解Python Socket网络编程
Jan 05 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
Python编程修改MP3文件名称的方法
Apr 19 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
PyQt5每天必学之单行文本框
Apr 19 Python
python 批量解压压缩文件的实例代码
Jun 27 Python
对Django 中request.get和request.post的区别详解
Aug 12 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
Apr 01 Python
python编写实现抽奖器
Sep 10 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自动获取字符串编码函数mb_detect_encoding
2011/05/31 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
2016/01/08 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
js+css在交互上的应用
2010/07/18 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
12行javascript代码绘制一个八卦图
2015/04/02 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
Vue 列表页带参数进详情页的操作(router-link)
2020/11/13 Javascript
[02:16]卖萌的僵尸 DOTA2神话信使飞僵小宝来袭
2014/03/24 DOTA
Python使用PIL库实现验证码图片的方法
2016/03/11 Python
python入门教程之识别验证码
2017/03/04 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
python编程羊车门问题代码示例
2017/10/25 Python
使用Django和Python创建Json response的方法
2018/03/26 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
python生成九宫格图片
2018/11/19 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
详解Python学习之安装pandas
2019/04/16 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
为什么要有struct关键字
2012/05/08 面试题
机关单位人员学雷锋心得体会
2014/03/10 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
Java中try catch处理异常示例
2021/12/06 Java/Android