python批量启动关闭游戏程序
#!/usr/bin/env python#coding:utf-8import os,re,sysdef numSort(): global game_gen_path,noStart,alreadyStart alreadyStart = set() allservice = set() game_gen_path = '/data/bz-tw-and/' command="ps aux | grep bz-tw-and-s | awk '{print $11}' | awk -F'/' '{print $2}' | grep -v '^$' | cut -d'-' -f 4" service = os.popen('%s' % command,'r').readlines() #popen需要用表格式形式阅读,会有\n出现,需要strip()去除 for service in service: service_name = service.strip().strip()[1:] alreadyStart.add(service_name) for qu_name in os.listdir(game_gen_path): if re.match('s\d+',qu_name): allservice.add(qu_name[1:]) noStart = sorted(list(map(int,alreadyStart^allservice))) alreadyStart = sorted(list(map(int,alreadyStart)))def outer(fun): def wrapper(): fun() for qu_name in qu_service: excutePath = game_gen_path + 's' + str(qu_name) + '/bin/' for fileName in os.listdir(excutePath): if fileName == script: print('##### s\033[31m%s\033[0m now %s... #####' % (qu_name,status)) os.system('sh %s' % (excutePath + fileName)) return wrapper@outerdef start(): global qu_service,script,status numSort() qu_service = noStart script = 'start.sh' status = 'start'@outerdef stop(): global qu_service,script,status numSort() qu_service = alreadyStart script = 'stop.sh' status = 'stop'def status(): command = "ps aux | grep bz-tw-and-s | awk '{print $11}' | awk -F'/' '{print $2}' | grep -v '^$' | sort -t's' -k 2n | awk -F's' '{print $2}'" service = os.popen('%s' % command, 'r').readlines() if service == []: print '进程已经全部关闭' else: for process in service: fushu = process.strip() print('bz-tw-and-s'+'\033[31m%s\033[0m' % fushu)def callable(input_key): script_name = sys.argv[0] try: service_option = {'start': start, 'stop': stop, 'status': status} return service_option[input_key]() except KeyError as e: print e print ('Example: %s start|stop|status' % script_name)if __name__ == '__main__': callable(sys.argv[1])
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。