python 自动重启服务

1、判断记事本服务是否运行,如果没有运行,则启动记事本

配置文件:config.ini

[MonitorProgramPath]
ProgramPath: C:\Windows\System32\notepad.exe

[MonitorProcessName]
ProcessName: notepad.exe

python脚本:

#-*- 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秒调用脚本看下服务是否正常,如果不正常则重启服务,如果正常,则打印服务正常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值