0
点赞
收藏
分享

微信扫一扫

windows server进程内存排行

通过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("ProcessName\t\tPID\ttmemory_size\t")
    for obj in mem_datas:
        s = ""
        for k,v in obj.items():
            s = s + "   "+str(v)
        print(s)

举报

相关推荐

0 条评论