利用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的几条建议分享
Feb 10 Python
python学习笔记:字典的使用示例详解
Jun 13 Python
Python解析网页源代码中的115网盘链接实例
Sep 30 Python
python文件操作整理汇总
Oct 21 Python
浅谈python中的占位符
Nov 09 Python
python实现windows下文件备份脚本
May 27 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
Jan 04 Python
解决reload(sys)后print失效的问题
Apr 25 Python
keras的siamese(孪生网络)实现案例
Jun 12 Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 Python
基于Python实现天天酷跑功能
Jan 06 Python
Python答题卡识别并给出分数的实现代码
Jun 22 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
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
php检索或者复制远程文件的方法
2015/03/13 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
php实现的农历算法实例
2015/08/11 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
htm调用JS代码
2007/03/15 Javascript
jquery 简单导航实现代码
2009/09/11 Javascript
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
JS中改变this指向的方法(call和apply、bind)
2016/03/26 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
python生成九宫格图片
2018/11/19 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
Python日志syslog使用原理详解
2020/02/18 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
Unineed旗下时尚轻奢网站:FABHunt
2019/05/13 全球购物
《草虫的村落》教学反思
2014/02/16 职场文书
《小草和大树》教学反思
2014/02/16 职场文书
《太阳》教学反思
2014/02/21 职场文书
商超业务员岗位职责
2014/03/12 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python
详解java如何集成swagger组件
2021/06/21 Java/Android
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
MYSQL如何查看进程和kill进程
2022/03/13 MySQL