python os.startfile python实现双击运行程序 python监控windows程序 监控进程不在时重新启动
用python监控您的window服务
最近比较烦,研发给的pc服务版本在虚拟机上已经开始给客户使用了,服务老是莫名的死翘翘,客户不停的电话给我,搞的我心情很差,于是在一个下午,静下心来,用python写了个简单的监控进程的脚本,当发现进程消失的时候,立即调用服务,开启服务。。。
脚本的工作原理是这样的:脚本读取配置文件,读取预先配置好的调用系统服务的路径和所要监控的服务在进程管理器中的进程名,之所以要用配置文件,是为了方便给需要的朋友,你只需要修改进程名和系统路径,源代码就不需要修改了。具体的看代码中的注释吧。。。下面的是配置文件 config.ini

[MonitorProgramPath]
ProgramPath: C:\Program Files\SSH Communications Security\SSH Secure Shell\SshClient.exe [MonitorProcessName]
ProcessName: SshClient.exe

上面可以根据你的需求配置不同的路径和进程名,我是需要监控SshClient.exe 这个程序,那就配置好他的调用的系统路径和他在任务管理器里面的进程名。
下面来看看代码:

#-*- encoding: utf-8 -*-
import logging
import wmi
import os
import time
from ConfigParser import ConfigParser
CONFIGFILE = 'config.ini'
config = ConfigParser()
config.read(CONFIGFILE)
ProgramPath = config.get('MonitorProgramPath','ProgramPath')
ProcessName = config.get('MonitorProcessName','ProcessName')
#读取配置文件中的进程名和系统路径,这2个参数都可以在配置文件中修改
ProList = []
#定义一个列表
c = wmi.WMI() def main():
for process in c.Win32_Process():
ProList.append(str(process.Name))
#把所有任务管理器中的进程名添加到列表 if ProcessName in ProList:
#判断进程名是否在列表中,如果是True,则所监控的服务正在 运行状态,
#打印服务正常运行
print ''
print "Server is running..."
print ''
else:
#如果进程名不在列表中,即监控的服务挂了,则在log文件下记录日志
#日志文件名是以年月日为文件名 f=open('.\\log\\'+time.strftime("%Y%m%d", time.localtime())+'-exception.txt','a')
print 'Server is not running,Begining to Restart Server...'
#打印服务状态
f.write('\n'+'Server is not running,Begining to Restart Server...'+'\n')
f.write(time.strftime('%Y-%m-%d %H:%M:%S --%A--%c', time.localtime()) +'\n')
#写入时间和服务状态到日志文件中
os.startfile(ProgramPath)
#调用服务重启
f.write('Restart Server Success...'+'\n')
f.write(time.strftime('%Y-%m-%d %H:%M:%S --%A--%c', time.localtime()))
f.close()
#关闭文件
print 'Restart Server Success...'
print time.strftime('%Y-%m-%d %H:%M:%S --%A--%c', time.localtime())
del ProList[:]
#清空列表,否则列表会不停的添加进程名,会占用系统资源 if __name__=="__main__" :
while True:
main()
time.sleep(10)
#每隔10秒调用脚本看下服务是否正常,如果不正常则重启服务,如果正常,则打印服务正常

呵呵,脚本还是很简单的,需要的朋友可以拿去玩玩,只要修改配置文件就可以了,不需要修改源代码,就能拿去跑跑,希望对大家的工作和学习有帮助,如果在使用中有问题,可以给我建议。。。
python os.startfile python实现双击运行程序 python监控windows程序 监控进程不在时重新启动的更多相关文章
- python os模块进程函数
Table of Contents 1. 系统进程 2. 举例 2.1. os.fork 2.2. os.exec 和 os.system 2.3. os.wait 3. 总结 系统进程 今天在看&l ...
- python os.path.dirname() abspath()
测试文件的名称 path_test.py 先确定文件目录 (my_flask3) python@ubuntu:~/Desktop/flask_news_pro$ python path_test.py ...
- C++学习笔记1(Windows程序运行原理及程序编写流程)
窗口产生过程,句柄原理,消息队列,回调函数,窗口关闭与应用程序退出的工作关系,使用VC++的若干小技巧,stdcall与Lessonecl调用规范的比较,初学者常犯错误及注意事项.以下是应用程序与操作 ...
- 窗体==>>初始Windows程序
初识Windows程序 01.创建Windows程序(VS) 01.打开Visual Studio开发工具 02.选择"文件"→"新建"→"项目&qu ...
- windows程序消息机制(Winform界面更新有关)
windows程序消息机制(Winform界面更新有关) 转自:http://www.cnblogs.com/blosaa/archive/2013/05/31/3109586.html 1. Win ...
- windows程序消息机制(Winform界面更新有关)--转
1. Windows程序消息机制 Windows GUI程序是基于消息机制的,有个主线程维护着消息泵.这个消息泵让windows程序生生不息. Windows程序有个消息队列,窗体上的所有消息是这个队 ...
- cmake 编译windows程序
cmake 编译windows程序 cmake 编译windows程序 cmake 编译windows程序 尽量使用 尽量使用 尽量使用 https://www.cnblogs.com/liujia ...
- 在windows中:双击运行Python程序、后台运行Python程序
在windows中:双击运行Python程序.后台运行Python程序 安装Python解释器的windows环境,如果双击运行*.py的文件,会闪退.怎样避免闪退呢? 我们用python的日志输出程 ...
- 把 Python 脚本打包成可以直接双击运行的 .exe 文件 【转】
因为最近要用到 Python 脚本,所以自己学习了一下,顺便学习如何把它打包成 .exe 可执行文件,达到双击运行的效果,网上找了资料,保存下来学习用,原文出处:https://baijiahao.b ...
随机推荐
- java面向对象入门之带参方法创建
/* Name :创建带参的方法 Power by :Stuart Date:2015.4.25 */ //创建Way类 class Way{ //Way类成员的基本变量 int add1=123; ...
- 蓝屏代码stop:0X000000EA(0X85E286B8,0X8635F210,0XF7A53CBC,0X00000001)
你这是显卡驱动问题,我把蓝屏代码都给你,以后在出现蓝屏自己看看行了. 1.0x0000000A:IRQL_NOT_LESS_OR_EQUAL ◆错误分析:主要是由问题的驱动程序.有缺陷或不兼容的硬件与 ...
- 在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途
contex指上下文,实际上就是一个web项目:path是虚拟目录,访问的时候用127.0.0.1:8080/welcom/*.jsp访问网页,welcome前面要加/;docBase是网页实际存放位 ...
- Thread.currentThread().getContextClassLoader() and Class.getClassLoader()
Thread.currentThread().getContextClassLoader() and Class.getClassLoader() 一.同一工程中: String path = T ...
- ubuntu下android studio生成的unaligned apk的zipalign处理
在ubuntu系统中使用android studio生成的apk文件始终都是unaligned apk, 在bulid.gradle中设置如下设置后,还是同样生成的是unaligned apk. mi ...
- Python 3 udp 套接字
Python 3 udp套接字 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号, ...
- php 通用redis类
php 通用redis类 <?php /** * redis操作类 * 说明,任何为false的串,存在redis中都是空串. * 只有在key不存在时,才会返回false. * 这点可用于防止 ...
- SQL 优化案例
create or replace procedure SP_GET_NEWEST_CAPTCHA( v_ACCOUNT_ID in VARCHAR2, --接收短信的手机号 v_Tail_num i ...
- 2.HelloWorld程序
1.流程图 2./itcast0711/src/main/java/cn/itcast/a_helloworld/HelloWorld.java package cn.itcast.a_hellowo ...
- vue backup
为了解决跨域问题 目前在项目,目录下创建了vue.config.js文件,目前是指向别外的一个端口,之前是记得在express后端进行端口指定的,先备注一下,后期跟进 npm ls | grep ax ...