利用Hyperic调用Python实现进程守护

 更新时间:2018年01月02日 11:29:40   作者:朱万骏  
这篇文章主要为大家详细介绍了利用Hyperic调用Python实现进程守护,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

利用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机器学习特征重要性分析的8个常用方法实例探究

    Python机器学习特征重要性分析的8个常用方法实例探究

    本文详细介绍8种常用的方法,涵盖了基于决策树、集成学习模型以及统计学方法的特征重要性分析,从决策树模型到SHAP值,深入探讨每种方法的原理和示例,帮助全面了解如何评估特征的重要性,将能更好地理解特征对模型预测的贡献,为提升模型性能和解释模型决策提供有力支持
    2024-01-01
  • LyScript实现对内存堆栈扫描的方法详解

    LyScript实现对内存堆栈扫描的方法详解

    LyScript插件中提供了三种基本的堆栈操作方法,其中push_stack用于入栈,pop_stack用于出栈,peek_stac可用于检查指定堆栈位置处的内存参数。所以本文将利用这一特性实现对内存堆栈扫描,感兴趣的可以了解一下
    2022-08-08
  • python循环嵌套的多种使用方法解析

    python循环嵌套的多种使用方法解析

    这篇文章主要介绍了python循环嵌套的多种使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Pyinstaller打包Pytorch框架所遇到的问题

    Pyinstaller打包Pytorch框架所遇到的问题

    Pytorch在python界用得比较多,打包容易失败,本文主要介绍了Pyinstaller打包Pytorch框架所遇到的问题,文中介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Python日志模块logging简介

    Python日志模块logging简介

    这篇文章主要介绍了Python日志模块logging简介,本文讲解了Logger、Handler、Formatter、日志配置管理、通过文件配置管理日志等内容,需要的朋友可以参考下
    2015-04-04
  • 在Pycharm中执行scrapy命令的方法

    在Pycharm中执行scrapy命令的方法

    今天小编就为大家分享一篇在Pycharm中执行scrapy命令的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python中if-elif-else语句实例用法讲解

    python中if-elif-else语句实例用法讲解

    在本篇文章里小编给大家整理的是一篇关于python中if-elif-else语句的使用注意事项,有需要的便宜么可以跟着参考下。
    2021-10-10
  • python 获取毫秒数,计算调用时长的方法

    python 获取毫秒数,计算调用时长的方法

    今天小编就为大家分享一篇python 获取毫秒数,计算调用时长的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法

    Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法

    今天小编就为大家分享一篇Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python 函数绘图及函数图像微分与积分

    Python 函数绘图及函数图像微分与积分

    今天小编就为大家分享一篇Python 函数绘图及函数图像微分与积分,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论