利用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中执行shell命令的几个方法小结
Sep 18 Python
Python列表生成器的循环技巧分享
Mar 06 Python
Python中的模块导入和读取键盘输入的方法
Oct 16 Python
Python断言assert的用法代码解析
Feb 03 Python
Python使用装饰器进行django开发实例代码
Feb 06 Python
Flask框架Flask-Principal基本用法实例分析
Jul 23 Python
python使用多进程的实例详解
Sep 19 Python
django的ORM模型的实现原理
Mar 04 Python
pyhton中__pycache__文件夹的产生与作用详解
Nov 24 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
Jan 06 Python
python实现吃苹果小游戏
Mar 21 Python
OpenCV全景图像拼接的实现示例
Jun 05 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 裁剪图片成固定大小代码方法
2009/09/09 PHP
php获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
PHP文件上传原理简单分析
2011/05/29 PHP
20个PHP常用类库小结
2011/09/11 PHP
测试php函数的方法
2013/11/13 PHP
PHP5.6读写excel表格文件操作示例
2019/02/26 PHP
javascript[js]获取url参数的代码
2007/10/17 Javascript
很酷的javascript loading效果代码
2008/06/18 Javascript
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
javascript数据类型详解
2017/02/07 Javascript
Node.js之网络通讯模块实现浅析
2017/04/01 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
以BootStrap Tab为例写一个前端组件
2017/07/25 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
深入理解Django中内置的用户认证
2017/10/06 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
Django如何重置migration的几种情景
2021/02/24 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
日本著名的平价时尚女性购物网站:Fifth
2016/08/24 全球购物
应届毕业生简历自我评价
2014/01/31 职场文书
摄影助理岗位职责
2014/02/07 职场文书
2014信息公开实施方案
2014/02/22 职场文书
房地产项目建议书
2014/03/12 职场文书
演讲稿格式范文
2014/05/19 职场文书
政协调研汇报材料
2014/08/15 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
房屋租房协议书范本
2014/12/04 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
宪法宣传标语100条
2019/10/15 职场文书