python处理跨平台应用

本文介绍了一个Python脚本,用于自动化地重启指定路径下的服务器应用程序,并通过定时任务实现周期性的重启,确保服务稳定运行。脚本还包含了进程的终止与启动流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在工作中处理应用程序维护,遇到很多问题终于还是搞定了。记下,后面补充具体问题。

#-*- 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")


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值