利用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中用于去除空格的三个函数的使用小结
Apr 07 Python
Django发送html邮件的方法
May 26 Python
解析Python编程中的包结构
Oct 25 Python
python开发之thread实现布朗运动的方法
Nov 11 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
Python实现的堆排序算法示例
Apr 29 Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 Python
python把1变成01的步骤总结
Feb 27 Python
python3 property装饰器实现原理与用法示例
May 15 Python
Python matplotlib学习笔记之坐标轴范围
Jun 28 Python
python 进制转换 int、bin、oct、hex的原理
Jan 13 Python
Python 内置函数速查表一览
Jun 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
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
Laravel 5框架学习之表单验证
2015/04/08 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
jQuery取得select选择的文本与值的示例
2013/12/09 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
js实现常用排序算法
2016/08/09 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
用Vue.js在浏览器中实现裁剪图像功能
2019/06/18 Javascript
python3中bytes和string之间的互相转换
2017/02/09 Python
python抽取指定url页面的title方法
2018/05/11 Python
python实现自动发送报警监控邮件
2018/06/21 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
python中操作文件的模块的方法总结
2021/02/04 Python
ASP.NET Core中的配置详解
2021/02/05 Python
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
社团活动策划书范文
2014/01/09 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
文艺演出策划方案
2014/06/07 职场文书
收款授权委托书
2014/10/02 职场文书
离婚协议书怎么写
2015/01/26 职场文书
2016入党积极分子党课培训心得体会
2016/01/06 职场文书
pytorch 运行一段时间后出现GPU OOM的问题
2021/06/02 Python
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android
Python编程源码报错解决方法总结经验分享
2021/10/05 Python