python os.startfile python实现双击运行程序 python监控windows程序 监控进程不在时重新启动

简介: 用python监控您的window服务原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://world77.blog.51cto.com/414605/782935    最近比较烦,研发给的pc服务版本在虚拟机上已经开始给客户使用了,服务老是莫名的死翘翘,客户不停的电话给我,搞的我心情很差,于是在一个下午,静下心来,用python写了个简单的监控进程的脚本,当发现进程消失的时候,立即调用服务,开启服务。

用python监控您的window服务

原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://world77.blog.51cto.com/414605/782935

    最近比较烦,研发给的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秒调用脚本看下服务是否正常,如果不正常则重启服务,如果正常,则打印服务正常
复制代码

 呵呵,脚本还是很简单的,需要的朋友可以拿去玩玩,只要修改配置文件就可以了,不需要修改源代码,就能拿去跑跑,希望对大家的工作和学习有帮助,如果在使用中有问题,可以给我建议。。。

目录
相关文章
|
4月前
|
存储 监控 算法
电脑监控管理中的 C# 哈希表进程资源索引算法
哈希表凭借O(1)查询效率、动态增删性能及低内存开销,适配电脑监控系统对进程资源数据的实时索引需求。通过定制哈希函数与链地址法冲突解决,实现高效进程状态追踪与异常预警。
233 10
|
4月前
|
Java 测试技术 API
【JUC】(1)带你重新认识进程与线程!!让你深层次了解线程运行的睡眠与打断!!
JUC是什么?你可以说它就是研究Java方面的并发过程。本篇是JUC专栏的第一章!带你了解并行与并发、线程与程序、线程的启动与休眠、打断和等待!全是干货!快快快!
704 2
|
12月前
|
PHP Docker 容器
如何在宿主主机运行容器中的php守护进程
在Docker容器中同时运行多个程序(如Nginx+PHP+Ftp)时,需用`docker exec`命令启动额外服务。首先通过`php -v`查看PHP版本,再用`which php-fpm7.4`确认PHP安装路径,通常返回`/usr/sbin/php-fpm7.4`。最后直接运行该路径启动PHP-FPM服务,确保其正常工作。
236 14
|
监控 搜索推荐 开发工具
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
1956 2
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
|
Java 关系型数据库 MySQL
java控制Windows进程,服务管理器项目
本文介绍了如何使用Java的`Runtime`和`Process`类来控制Windows进程,包括执行命令、读取进程输出和错误流以及等待进程完成,并提供了一个简单的服务管理器项目示例。
260 1
MASM32写的免费软件“ProcView/系统进程监控” V1.4.4003 说明和下载
MASM32写的免费软件“ProcView/系统进程监控” V1.4.4003 说明和下载
|
Windows Python
python获取windows机子上运行的程序名称
python获取windows机子上运行的程序名称
|
Linux Shell
6-9|linux查询现在运行的进程
6-9|linux查询现在运行的进程
|
安全 API C#
C# 如何让程序后台进程不被Windows任务管理器强制结束
C# 如何让程序后台进程不被Windows任务管理器强制结束
704 0
|
NoSQL Linux 程序员
进程管理与运行分析
进程管理与运行分析
130 0

推荐镜像

更多