通过python脚本实现
# coding=utf8
import os
import numbers
import re
import collections
def Sort_ProcessMemoey():
mem_data = [] # windwos服务器所有进程内存占用情况
# 获取游戏pid
pidcmd = 'ps -W'
pidlist = os.popen(pidcmd).read().strip(' ').split("n")[1:]
letters_list = [x.strip(' ').split(' ')[0] for x in pidlist if len(x) > 0]
for pidnum in letters_list: #遍历pid进程号
try:
pidnum = int(pidnum)
except:
continue
#判断pidnum是否为数字
if isinstance(pidnum, numbers.Number):
dic = collections.OrderedDict() # 创建一个有序字典
pattern = re.compile(r'([^s]+)s+(d+)s.*s([^s]+sK)')
cmd = 'tasklist' + ' | findstr.exe ' + '"' + str(pidnum) + '"'
result = os.popen(cmd).read()
resultList = result.split("n")
for srcLine in resultList:
srcLine = "".join(srcLine.split('n'))
if len(srcLine) == 0:
break
m = pattern.search(srcLine)
if m == None:
continue
if str(os.getpid()) == m.group(2):
continue
ori_mem = m.group(3).replace(',', '')
ori_mem = ori_mem.replace(' K', '')
ori_mem = ori_mem.replace(r'sK', '')
memEach = int(ori_mem)
# print(
# 'ProcessName:' + m.group(1) + 'tPID:' + m.group(2) + 'tmemory size:%.2f' % (memEach * 1.0 / 1024),
# 'M')
dic['ProcessName'] = m.group(1)
dic['PID'] = m.group(2)
dic['memory_size'] = round((memEach*1.0/1024),2)
mem_data = mem_data + [dic]
mem_datas = sorted(mem_data, key=lambda keys: keys['memory_size'],reverse=True)
return mem_datas
if __name__ == "__main__":
mem_datas = Sort_ProcessMemoey()
print("ProcessNamettPIDttmemory_sizet")
for obj in mem_datas:
s = ""
for k,v in obj.items():
s = s + " "+str(v)
print(s)
服务器租用托管,机房租用托管,主机租用托管,https://www.e1idc.com