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秒调用脚本看下服务是否正常,如果不正常则重启服务,如果正常,则打印服务正常
复制代码

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

目录
相关文章
|
15天前
|
C++ Python Windows
在Visual Studio中使用Python(Windows)
在Visual Studio中使用Python(Windows)
|
9天前
|
Python Windows
在 Windows 平台下打包 Python 多进程代码为 exe 文件的问题及解决方案
在使用 Python 进行多进程编程时,在 Windows 平台下可能会出现将代码打包为 exe 文件后无法正常运行的问题。这个问题主要是由于在 Windows 下创建新的进程需要复制父进程的内存空间,而 Python 多进程机制需要先完成父进程的初始化阶段后才能启动子进程,所以在这个过程中可能会出现错误。此外,由于没有显式导入 Python 解释器,也会导致 Python 解释器无法正常工作。为了解决这个问题,我们可以使用函数。
16 5
|
8天前
|
缓存 数据安全/隐私保护 虚拟化
windows端口被占用,无法通过netstat找到进程,占用的端口又不能修改,该怎么办?
项目运行时服务器8080端口被占用,常规`netstat`命令找不到占用进程。解决方法包括:1) 强制关机重启释放端口;2) 使用`netstat -anobq`或Windows 10的`Get-NetTCPConnection` PowerShell命令查找BOUND状态的进程;3) 调整Windows动态端口范围,避免冲突。注意,强制关机可能影响数据安全。
60 2
|
14天前
|
Linux Shell C语言
Linux进程控制——Linux进程程序替换
Linux进程控制——Linux进程程序替换
18 2
|
14天前
|
Windows Python
每日自动发邮件(Python +QQ邮箱 + Windows 10定时任务)
每日自动发邮件(Python +QQ邮箱 + Windows 10定时任务)
每日自动发邮件(Python +QQ邮箱 + Windows 10定时任务)
|
17天前
|
编解码 安全 网络安全
RealVNC的 VNC server在windows7系统下无法正确运行
在Windows 7上运行旧版VNC Server(如4.1.2)可能存在兼容性问题,但可通过调整配置解决。步骤包括:安装VNC Server,设置兼容性模式(选择Windows XP SP3),启动VNC Server,配置VNC连接参数。若遇到问题,检查防火墙设置,确保系统更新,并考虑升级到新版VNC Server以提高性能和兼容性。
|
1天前
|
开发框架 安全 .NET
程序技术好文:进程和线程的区别
程序技术好文:进程和线程的区别
|
4天前
|
存储 数据安全/隐私保护 Windows
逆向学习Windows篇:进程句柄操作详解
逆向学习Windows篇:进程句柄操作详解
5 0
|
30天前
|
开发框架 .NET API
在Windows Server 2008 R2上运行.Net 8应用
在Windows Server 2008 R2上成功运行.Net 8程序,需安装三个补丁:Windows Server 2008 R2 SP1 (KB976932)是基础更新;VC_redist.x64提供MSVC库支持;KB3063858解决.NET运行时加载`kernel.dll`的路径问题。KB3063858可能需要KB2533623。详细信息和下载链接在文中给出。
|
25天前
|
存储 Linux Shell
【Linux】进程程序替换
【Linux】进程程序替换

热门文章

最新文章