利用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实现strcmp函数功能示例
Mar 25 Python
详谈python read readline readlines的区别
Sep 22 Python
python实现单向链表详解
Feb 08 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 Python
Python QQBot库的QQ聊天机器人
Jun 19 Python
Python实现平行坐标图的两种方法小结
Jul 04 Python
简单了解python PEP的一些知识
Jul 13 Python
pygame实现贪吃蛇游戏(下)
Oct 29 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
Mar 06 Python
Python 测试框架unittest和pytest的优劣
Sep 26 Python
教你怎么用Python操作MySql数据库
May 31 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分页详细讲解(有实例)
2013/10/30 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
javascript 新浪背投广告实现代码
2009/07/07 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
javascript显示系统当前时间代码
2016/12/29 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
Vue组件选项props实例详解
2017/08/18 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
layui的table中显示图片方法
2018/08/17 Javascript
详解elementUI中input框无法输入的问题
2020/04/27 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
Python中的CURL PycURL使用例子
2014/06/01 Python
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Python中字典和集合学习小结
2017/07/07 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
详解python pandas 分组统计的方法
2019/07/30 Python
娇韵诗俄罗斯官方网站:Clarins俄罗斯
2020/10/03 全球购物
linux面试题参考答案(9)
2016/01/29 面试题
董事长职责范文
2013/11/08 职场文书
银行求职信怎么写
2014/05/26 职场文书
办护照工作证明
2014/10/01 职场文书
确保工程质量承诺书
2015/04/29 职场文书
乡镇党建工作总结2015
2015/05/19 职场文书
常住证明范本
2015/06/23 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
python解决12306登录验证码的实现
2021/04/18 Python
vue如何批量引入组件、注册和使用详解
2021/05/12 Vue.js