利用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的Tornado框架结合memcached页面改善博客性能
Apr 24 Python
利用Python脚本实现ping百度和google的方法
Jan 24 Python
基于并发服务器几种实现方法(总结)
Dec 29 Python
Python文本处理之按行处理大文件的方法
Apr 09 Python
django DRF图片路径问题的解决方法
Sep 10 Python
Python3.5面向对象程序设计之类的继承和多态详解
Apr 24 Python
python读出当前时间精度到秒的代码
Jul 05 Python
python在openstreetmap地图上绘制路线图的实现
Jul 11 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
Django Xadmin多对多字段过滤实例
Apr 07 Python
树莓派升级python的具体步骤
Jul 05 Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 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 whois查询API制作方法
2011/06/23 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
jQuery.prop() 使用详解
2015/07/19 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
超全面的javascript中变量命名规则
2017/02/09 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
python自动格式化json文件的方法
2015/03/11 Python
Python封装shell命令实例分析
2015/05/05 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
django表单的Widgets使用详解
2019/07/22 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
程序集与命名空间有什么不同
2014/07/25 面试题
小学教师国培感言
2014/02/08 职场文书
霸王洗发水广告词
2014/03/14 职场文书
保管员岗位职责
2015/02/14 职场文书
力克胡哲观后感
2015/06/10 职场文书
国庆节新闻稿
2015/07/17 职场文书
组织委员竞选稿
2015/11/21 职场文书
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS
MySQL时区造成时差问题
2022/04/13 MySQL
python manim实现排序算法动画示例
2022/08/14 Python
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python