python进程监控

 1 # -*- coding:utf-8 -*-
 2 import subprocess,time,sys
 3 import os
 4 os.system("title 监控:自动签到1".decode(‘UTF-8‘).encode(‘GBK‘))
 5 TIME = 1                       #程序状态检测间隔(单位:分钟)
 6 CMD = "4399.py"                 #需要执行程序的绝对路径,支持jar 如:D:\\calc.exe 或者D:\\test.jar
 7
 8
 9
10 class Auto_Run():
11     def __init__(self,sleep_time,cmd):
12         self.sleep_time = sleep_time
13         self.cmd = cmd
14         self.ext = (cmd[-3:]).lower()        #判断文件的后缀名,全部换成小写
15         self.p = None                        #self.p为subprocess.Popen()的返回值,初始化为None
16         self.run()                           #启动时先执行一次程序
17
18         try:
19             while 1:
20                 time.sleep(sleep_time * 6)  #休息10分钟,判断程序状态
21                 self.poll = self.p.poll()    #判断程序进程是否存在,None:表示程序正在运行 其他值:表示程序已退出
22                 if self.poll is None:
23                     print "运行正常".decode(‘UTF-8‘).encode(‘GBK‘)
24                 else:
25                     print "未检测到程序运行状态,准备启动程序".decode(‘UTF-8‘).encode(‘GBK‘)
26                     self.run()
27         except KeyboardInterrupt as e:
28             print "检测到CTRL+C,准备退出程序!".decode(‘UTF-8‘).encode(‘GBK‘)
29 #            self.p.kill()                   #检测到CTRL+C时,kill掉CMD中启动的exe或者jar程序
30
31     def run(self):
32         if self.ext == ".py":
33             print ‘start OK!‘
34             self.p = subprocess.Popen([‘python‘,‘%s‘ % self.cmd], stdin = sys.stdin,stdout = sys.stdout, stderr = sys.stderr, shell = False)
35         else:
36             pass
37 app = Auto_Run(TIME,CMD)

原文地址:https://www.cnblogs.com/cbreeze/p/10205780.html

时间: 2024-11-10 10:00:38

python进程监控的相关文章

Python进程监控-MyProcMonitor

psutil api文档: http://pythonhosted.org/psutil/ 配置: process: name: ProxyTool.exe path: E:\Project\ProxyTool.exe rules: p_cpu_percent: 100 #t_cpu_percent: 20 #cpu_times: 30 #num_threads: 15 #connections: 20 noporcesssleeptime: 3 getprocinfotimespan: 3 c

用Python的Supervisor进行进程监控以及自动启动

做服务器端开发的同学应该都对进程监控不会陌生,最近恰好要更换 uwsgi 为 gunicorn,而gunicorn又恰好有这么一章讲进程监控,所以多研究了下. 结合之前在腾讯工作的经验,也会讲讲腾讯的服务器监控是怎么做的.同时也会讲下小团队又该怎么敏捷的解决. 下面按照监控的方法依次介绍. 一.按照进程名监控 在腾讯内部所有server都是要打包发布的,而在打包过程中是需要填写要监控的进程名,然后在crontab中定时通过ps查询进程是否存在. 这种方法是比较简单的方法,但是考虑到很多进程会在启

python进程池剖析(一)

python中两个常用来处理进程的模块分别是subprocess和multiprocessing,其中subprocess通常用于执行外部程序,比如一些第三方应用程序,而不是Python程序.如果需要实现调用外部程序的功能,python的psutil模块是更好的选择,它不仅支持subprocess提供的功能,而且还能对当前主机或者启动的外部程序进行监控,比如获取网络.cpu.内存等信息使用情况,在做一些自动化运维工作时支持的更加全面.multiprocessing是python的多进程模块,主要

linux 进程监控

linux 进程监控 monit monit是一个小型的开放源码工具来管理和监控Unix系统.Monit可以自动维护进程,及时避免进程异常退出等产生的问题. 系统: monit可以监控问题的发生,包括进程状态.系统cpu负载.内存占用情况等,例如当apache服务的cpu负载以及内存闸弄情况过高时候,它会重启apache服务. 进程: monit可以监控守护进程,包括系统进程.例如当某个进行down掉,它会自动恢复重启该进程. 文件系统:Monit可以监控本地文件.目录.文件系统的变化,包括时间

Mac下Supervisor进程监控管理工具的安装与配置

Supervisor是一个类 unix 操作系统下的进程监控管理工具. Supervisor是由 Python 写成,可用 Python 的包安装管理工具 pip(Python Package Index) 直接安装 代码如下: sudo pip install supervisor 配置 Supervisor Supervisor 的配置文件命名为 supervisord.conf,它为 supervisord(Supervisor 的主服务命令) 和 supervisorctl(Superv

使用 gdb 调试运行中的 Python 进程

本文和大家分享的是使用 gdb 调试运行中的 Python 进程相关内容,一起来看看吧,希望对大家学习python有所帮助. 准备工作 安装 gdb 和 python2.7-dbg: $ sudo apt-get install gdb python2.7-dbg 设置 /proc/sys/kernel/yama/ptrace_scope: $ sudo su# echo 0 > /proc/sys/kernel/yama/ptrace_scope 运行 test.py: $ python te

Linx监控分享--重点进程监控(mysqld)+邮件提醒

重点进程监控 mysqld:进程退出了,报警.没有退出则监控mysqld的(cpu(>=100%)|| mem(>=80%))开始提醒,同时收集和分析mysql状态信息:连接数(>=max_connections * 0.8)开始提醒:打开的句柄数(>=8192*0.8?)开始提醒. 待完善... 如果是单机多实例的话,只需要增加一个for循环就好了. 在手机上安装网易的邮件客户端,就可以达到实时提醒的效果. 关于mail的配置,见之前的文章:http://blog.csdn.ne

使用python程序监控云服务器的带宽

将一些不重要的服务迁移到云服务上,有些下载什么的,为了防止带宽超了,python做了一个监控程序.用python3写的,由于和python2有些区别,特记录下来备查. 代码如下: #this is for monitor qingcloud# coding=utf-8import base64import hmacimport urllibimport urllib.parsefrom hashlib import sha256import urllib.requestimport dateti

分析erlang进程监控的实现

Erlang支持Monitor和Link两种监控进程的方式,使得所有进程可以连成一个整体.当某个进程出错退出时,监控进程会收到该进程退出的消息通知.有了这些特点,使用Erlang建立一个简单,并且健壮的系统就不是什么难事.前面有文章分析了两种方式的用法,这里分析下monitor和link的实现. 源码分析 monitor 和link实现有点类似,下面以monitor为例做说明(erlang版本R16B02) erlang:monitor/2的实现 // bif.c 实现 erlang:monit