Windows 下针对python脚本做一个简单的进程保护
前提:
大家运行的脚本程序经常会碰到系统异常关闭、或被其他用户错杀的情况。这样就需要一个进程保护的工具。
本文结合windows 的计划任务,实现一个简单的进程保护的功能。
- 利用py2exe生产 exe 文件.
py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序.
下载地址:从http://prdownloads.sourceforge.net/py2exe
创建py2exehelper.py文件 具体代码如下:
__author__ = 'Bruce_Zhou' from distutils.core import setup import py2exe setup(console=['uniquetest.py'],)
创建 uniquetest.py 代码如下:
__author__ = 'Bruce_Zhou' import threading import time import urllib2 import os class CountDownTimer(threading.Thread): def __init__(self, seconds, action): self.runTime = seconds self.action = action super(CountDownTimer, self).__init__() def run(self): counter = self.runTime for sec in range(self.runTime): print counter time.sleep(1.0) counter -= 1 print " Time's up" self.action() def dosomethine(): print "I'm ready" t = CountDownTimer(1800, dosomethine) t.start() if __name__ == "__main__": t = CountDownTimer(10, dosomethine) t.start()
将py2exehelper.py 和uniquetest.py 放在同一目录。
进入py2exehelper.py文件所在目录。
执行命令: python py2exehelper.py py2exe。
会在目录中创建两个文件夹”bulid” 和 “dist”。你可以在dist 目录中找到你需要的exe 文件。
2.利用计划任务定时检测EXE是否运行。
创建checkexe.py脚本用于检测进程是否存在,如果不存在则开启一个新的,如果存在则什么都不做。
你可以设定计划任务每隔多长时间久去执行下这个脚本,这样就可以保证EXE始终保持运行。
代码如下:
import wmi import subprocess import os from win32com.client import Dispatch c = wmi.WMI() def checkexe(): for process in c.Win32_Process(): if process.Name == "uniquetest.exe": return True return False if __name__ == "__main__": print checkexe() if not checkexe(): subprocess.Popen([r'C:\Users\Bruce_Zhou\Desktop\2exe\dist\uniquetest.exe'])
其中WMI模块获取Windows系统的硬件信息:硬盘分区、使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息。
下载地址:https://pypi.python.org/pypi/WMI/。