在工作中处理应用程序维护,遇到很多问题终于还是搞定了。记下,后面补充具体问题。
#-*- coding=gbk -*-
import psutil
import re
import sys
import string
import time
import subprocess
def startProcess(cwd):
print cwd;
processName = ["ctpd.exe", "mdd.exe", "cf_serverd.exe", "trade_serverd.exe", "frontd.exe"];
processXml = dict((("frontd.exe", "front.xml"), ("trade_serverd.exe", "trade_server.xml"), ("cf_serverd.exe", "cf_server.xml"), ("mdd.exe", "md.xml"), ("ctpd.exe", "server_ctp.xml")));
for k in processName:
v = processXml[k];
processInfo = cwd+"\\"+k+" "+cwd+"\\"+v;
#processInfo = k+" "+v;
print processInfo
try:
p = subprocess.Popen(processInfo, stdout=subprocess.PIPE);
print "%s starts successful" %k;
time.sleep(10);
except Exception, p:
print "(%s, %s) is not find!" %(k, v)
def controlProcess(hour=0, interval=5):
processName = ["ctpd.exe", "mdd.exe", "cf_serverd.exe", "trade_serverd.exe", "frontd.exe", "front_testd.exe"];
while 1:
tmpHour = string.atoi(time.strftime("%H", time.localtime()))
#print "当前时间:", tmpHour
if tmpHour == hour:
print "当前时间为:%s, 服务器重启中..." %time.ctime()
#设置下一次终止时间
hour = tmpHour;
if hour >= 24:
hour = hour-24;
#终止进程
for p in processName:
killProcess(p);
#启动进程
startProcess("D:\\Code\\zq_sim_debug\\bin");
#设置休眠半个小时
time.sleep(10)
print "距离下一次重启还有%d个小时" %(hour-tmpHour)
def killProcess(x):
for p in psutil.process_iter():
#print(p)
#print "pid is:", p.pid
pItem = psutil.Process(p.pid)
try:
if (pItem.name() == x):
pItem.kill();
print "kill name ", x;
except Exception, p:
print "the pid %d is no name" % p.pid
#print "name:", sys.argv[0]
#for i in range(1, len(sys.argv)):
# print "parma:", i, sys.argv[i]
if __name__ == "__main__":
print "首次重启服务器时间设置(例如00:00:00)"
#inputTime = input("请输入:");
inputTime = raw_input("请输入:");
print "设置循环间隔启动服务器时间(单位:小时)"
inputInterval = raw_input("请输入:");
strHour, min_sec = inputTime.split(':', 1);
hour = string.atoi(strHour);
interval = string.atoi(inputInterval);
#print "启动时间为:", hour;
#print "间隔时间为:", interval
controlProcess(hour, interval)
#startProcess("D:\\Code\\zq_sim_debug\\bin")