利用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下的subprocess模块的入门指引
Apr 16 Python
Python中处理字符串之isalpha()方法的使用
May 18 Python
用python做一个搜索引擎(Pylucene)的实例代码
Jul 05 Python
python 输出上个月的月末日期实例
Apr 11 Python
python队列Queue的详解
May 10 Python
django 控制页面跳转的例子
Aug 06 Python
python 统计文件中的字符串数目示例
Dec 24 Python
Python-jenkins 获取job构建信息方式
May 12 Python
浅谈Django前端后端值传递问题
Jul 15 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 Python
Python开发.exe小工具的详细步骤
Jan 27 Python
Python实现粒子群算法的示例
Feb 14 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
跟我学小偷程序之成功偷取首页(第三天)
2006/10/09 PHP
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
php动态实现表格跨行跨列实现代码
2012/11/06 PHP
php微信开发之批量生成带参数的二维码
2016/06/26 PHP
Yii2.0 RESTful API 基础配置教程详解
2018/12/26 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
Javascript和Ajax中文乱码吐血版解决方案
2009/12/21 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
2013/06/05 Javascript
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
详解操作虚拟dom模拟react视图渲染
2018/07/25 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
详解微信小程序(Taro)手动埋点和自动埋点的实现
2021/03/02 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
linux下python抓屏实现方法
2015/05/22 Python
Python实现一个服务器监听多个客户端请求
2018/04/12 Python
python 读写文件,按行修改文件的方法
2018/07/12 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
Python bisect模块原理及常见实例
2020/06/17 Python
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
异步传递消息系统的作用
2016/05/01 面试题
报社实习生自荐信
2014/01/24 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
护理工作心得体会
2016/01/22 职场文书
合作意向书怎么写
2019/06/24 职场文书
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
2022/04/19 Java/Android
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers