前提:
大家运行的脚本程序经常会碰到系统异常关闭、或被其他用户错杀的情况。这样就需要一个进程保护的工具。
本文结合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型号,当前运行的进程,自启动程序及位置,系统的版本等信息。