linux系统下 python获取 内存、cpu、负载、网络流量、硬盘等信息

614 阅读7分钟
原文链接: blog.csdn.net
内存信息 / meminfo

 返回dict

[python] view plain copy print?
  1. #!/usr/bin/env python  
  2. def memory_stat():  
  3.     mem = {}  
  4.     f = open("/proc/meminfo")  
  5.     lines = f.readlines()  
  6.     f.close()  
  7.     for line in lines:  
  8.         if len(line) < 2: continue  
  9.         name = line.split(':')[0]  
  10.         var = line.split(':')[1].split()[0]  
  11.         mem[name] = long(var) * 1024.0  
  12.     mem['MemUsed'] = mem['MemTotal'] - mem['MemFree'] - mem[ 'Buffers'] - mem['Cached']  
  13.     return mem  
#!/usr/bin/env python
def memory_stat():
    mem = {}
    f = open("/proc/meminfo")
    lines = f.readlines()
    f.close()
    for line in lines:
        if len(line) < 2: continue
        name = line.split(':')[0]
        var = line.split(':')[1].split()[0]
        mem[name] = long(var) * 1024.0
    mem['MemUsed'] = mem['MemTotal'] - mem['MemFree'] - mem['Buffers'] - mem['Cached']
    return mem

CPU信息 / cpuinfo 返回list,每核心一dict

[python] view plain copy print?
  1. #!/usr/bin/env python  
  2. def cpu_stat():  
  3.     cpu = []  
  4.     cpuinfo = {}  
  5.     f = open("/proc/cpuinfo")  
  6.     lines = f.readlines()  
  7.     f.close()  
  8.     for line in lines:  
  9.         if line == '\n':  
  10.             cpu.append(cpuinfo)  
  11.             cpuinfo = {}  
  12.         if len(line) < 2: continue  
  13.         name = line.split(':')[0].rstrip()  
  14.         var = line.split(':')[1]  
  15.         cpuinfo[name] = var  
  16.     return cpu  
#!/usr/bin/env python
def cpu_stat():
    cpu = []
    cpuinfo = {}
    f = open("/proc/cpuinfo")
    lines = f.readlines()
    f.close()
    for line in lines:
        if line == '\n':
            cpu.append(cpuinfo)
            cpuinfo = {}
        if len(line) < 2: continue
        name = line.split(':')[0].rstrip()
        var = line.split(':')[1]
        cpuinfo[name] = var
    return cpu

负载信息 / loadavg
返回dict [python] view plain copy print?
  1. #!/usr/bin/env python  
  2. def load_stat():  
  3.     loadavg = {}  
  4.     f = open("/proc/loadavg")  
  5.     con = f.read().split()  
  6.     f.close()  
  7.     loadavg['lavg_1']=con[0]  
  8.     loadavg['lavg_5']=con[1]  
  9.     loadavg['lavg_15']=con[2]  
  10.     loadavg['nr']=con[3]  
  11.     loadavg['last_pid']=con[4]  
  12.     return loadavg  
#!/usr/bin/env python
def load_stat():
    loadavg = {}
    f = open("/proc/loadavg")
    con = f.read().split()
    f.close()
    loadavg['lavg_1']=con[0]
    loadavg['lavg_5']=con[1]
    loadavg['lavg_15']=con[2]
    loadavg['nr']=con[3]
    loadavg['last_pid']=con[4]
    return loadavg

运转时间 / Uptime
返回dict [python] view plain copy print?
  1. #!/usr/bin/env python  
  2. def uptime_stat():  
  3.     uptime = {}  
  4.     f = open("/proc/uptime")  
  5.     con = f.read().split()  
  6.     f.close()  
  7.     all_sec = float(con[0])  
  8.     MINUTE,HOUR,DAY = 60,3600,86400  
  9.     uptime['day'] = int(all_sec / DAY )  
  10.     uptime['hour'] = int((all_sec % DAY) / HOUR)  
  11.     uptime['minute'] = int((all_sec % HOUR) / MINUTE)  
  12.     uptime['second'] = int(all_sec % MINUTE)  
  13.     uptime['Free rate'] = float(con[1]) / float(con[0])  
  14.     return uptime  
#!/usr/bin/env python
def uptime_stat():
    uptime = {}
    f = open("/proc/uptime")
    con = f.read().split()
    f.close()
    all_sec = float(con[0])
    MINUTE,HOUR,DAY = 60,3600,86400
    uptime['day'] = int(all_sec / DAY )
    uptime['hour'] = int((all_sec % DAY) / HOUR)
    uptime['minute'] = int((all_sec % HOUR) / MINUTE)
    uptime['second'] = int(all_sec % MINUTE)
    uptime['Free rate'] = float(con[1]) / float(con[0])
    return uptime

获取网卡流量信息 /proc/net/dev
返回dict,单位byte [python] view plain copy print?
  1. #!/usr/bin/env python  
  2. def net_stat():  
  3.     net = []  
  4.     f = open("/proc/net/dev")  
  5.     lines = f.readlines()  
  6.     f.close()  
  7.     for line in lines[2:]:  
  8.         con = line.split()  
  9.         """ 
  10.         intf = {} 
  11.         intf['interface'] = con[0].lstrip(":") 
  12.         intf['ReceiveBytes'] = int(con[1]) 
  13.         intf['ReceivePackets'] = int(con[2]) 
  14.         intf['ReceiveErrs'] = int(con[3]) 
  15.         intf['ReceiveDrop'] = int(con[4]) 
  16.         intf['ReceiveFifo'] = int(con[5]) 
  17.         intf['ReceiveFrames'] = int(con[6]) 
  18.         intf['ReceiveCompressed'] = int(con[7]) 
  19.         intf['ReceiveMulticast'] = int(con[8]) 
  20.         intf['TransmitBytes'] = int(con[9]) 
  21.         intf['TransmitPackets'] = int(con[10]) 
  22.         intf['TransmitErrs'] = int(con[11]) 
  23.         intf['TransmitDrop'] = int(con[12]) 
  24.         intf['TransmitFifo'] = int(con[13]) 
  25.         intf['TransmitFrames'] = int(con[14]) 
  26.         intf['TransmitCompressed'] = int(con[15]) 
  27.         intf['TransmitMulticast'] = int(con[16]) 
  28.         """  
  29.         intf = dict(  
  30.             zip(  
  31.                 ( 'interface','ReceiveBytes', 'ReceivePackets',  
  32.                   'ReceiveErrs','ReceiveDrop', 'ReceiveFifo',  
  33.                   'ReceiveFrames','ReceiveCompressed', 'ReceiveMulticast',  
  34.                   'TransmitBytes','TransmitPackets', 'TransmitErrs',  
  35.                   'TransmitDrop', 'TransmitFifo', 'TransmitFrames',  
  36.                   'TransmitCompressed','TransmitMulticast' ),  
  37.                 ( con[0].rstrip(":"),int(con[ 1]),int(con[2]),  
  38.                   int(con[3]),int(con[4]),int(con[ 5]),  
  39.                   int(con[6]),int(con[7]),int(con[ 8]),  
  40.                   int(con[9]),int(con[10]),int(con[ 11]),  
  41.                   int(con[12]),int(con[13]),int(con[ 14]),  
  42.                   int(con[15]),int(con[16]), )  
  43.             )  
  44.         )  
  45.   
  46.         net.append(intf)  
  47.     return net  
#!/usr/bin/env python
def net_stat():
    net = []
    f = open("/proc/net/dev")
    lines = f.readlines()
    f.close()
    for line in lines[2:]:
        con = line.split()
        """
        intf = {}
        intf['interface'] = con[0].lstrip(":")
        intf['ReceiveBytes'] = int(con[1])
        intf['ReceivePackets'] = int(con[2])
        intf['ReceiveErrs'] = int(con[3])
        intf['ReceiveDrop'] = int(con[4])
        intf['ReceiveFifo'] = int(con[5])
        intf['ReceiveFrames'] = int(con[6])
        intf['ReceiveCompressed'] = int(con[7])
        intf['ReceiveMulticast'] = int(con[8])
        intf['TransmitBytes'] = int(con[9])
        intf['TransmitPackets'] = int(con[10])
        intf['TransmitErrs'] = int(con[11])
        intf['TransmitDrop'] = int(con[12])
        intf['TransmitFifo'] = int(con[13])
        intf['TransmitFrames'] = int(con[14])
        intf['TransmitCompressed'] = int(con[15])
        intf['TransmitMulticast'] = int(con[16])
        """
        intf = dict(
            zip(
                ( 'interface','ReceiveBytes','ReceivePackets',
                  'ReceiveErrs','ReceiveDrop','ReceiveFifo',
                  'ReceiveFrames','ReceiveCompressed','ReceiveMulticast',
                  'TransmitBytes','TransmitPackets','TransmitErrs',
                  'TransmitDrop', 'TransmitFifo','TransmitFrames',
                  'TransmitCompressed','TransmitMulticast' ),
                ( con[0].rstrip(":"),int(con[1]),int(con[2]),
                  int(con[3]),int(con[4]),int(con[5]),
                  int(con[6]),int(con[7]),int(con[8]),
                  int(con[9]),int(con[10]),int(con[11]),
                  int(con[12]),int(con[13]),int(con[14]),
                  int(con[15]),int(con[16]), )
            )
        )

        net.append(intf)
    return net

磁盘空间使用
使用内置python内置函数,返回dict,单位byte [python] view plain copy print?
  1. #!/usr/bin/env python  
  2. def disk_stat():  
  3.     import os  
  4.     hd={}  
  5.     disk = os.statvfs("/")  
  6.     hd['available'] = disk.f_bsize * disk.f_bavail  
  7.     hd['capacity'] = disk.f_bsize * disk.f_blocks  
  8.     hd['used'] = disk.f_bsize * disk.f_bfree  
  9.     return hd  
#!/usr/bin/env python
def disk_stat():
    import os
    hd={}
    disk = os.statvfs("/")
    hd['available'] = disk.f_bsize * disk.f_bavail
    hd['capacity'] = disk.f_bsize * disk.f_blocks
    hd['used'] = disk.f_bsize * disk.f_bfree
    return hd