python3 擷取Linux系統資訊

來源:互聯網
上載者:User

標籤:網路   lob   ref   imp   rom   network   .net   strip   highlight   

系統資訊
import platformplatform.uname()platform.architecture()

 

CPU資訊

/proc/cpuinfo檔案包含了系統處理器單元的資訊。

#!/usr/bin/env/ python"""/proc/cpuinfo as a Python dict"""from __future__ import print_functionfrom collections import OrderedDictimport pprintdef cpuinfo():    """    Return the information in /proc/cpuinfo    as a dictionary in the following format:    cpu_info[‘proc0‘]={...}    cpu_info[‘proc1‘]={...}    """    cpuinfo=OrderedDict()    procinfo=OrderedDict()    nprocs = 0    with open(‘/proc/cpuinfo‘) as f:        for line in f:            if not line.strip():                # end of one processor                cpuinfo[‘proc%s‘ % nprocs] = procinfo                nprocs=nprocs+1                # Reset                procinfo=OrderedDict()            else:                if len(line.split(‘:‘)) == 2:                    procinfo[line.split(‘:‘)[0].strip()] = line.split(‘:‘)[1].strip()                else:                    procinfo[line.split(‘:‘)[0].strip()] = ‘‘                return cpuinfoif __name__==‘__main__‘:    cpuinfo = cpuinfo()    print(cpuinfo)    for processor in cpuinfo.keys():        print(cpuinfo[processor][‘model name‘])

 

記憶體資訊

檔案/proc/meminfo系統記憶體的資訊

#!/usr/bin/env pythonfrom __future__ import print_functionfrom collections import OrderedDictdef meminfo():    """      Return the information in /proc/meminfo    as a dictionary     """    meminfo=OrderedDict()    with open(‘/proc/meminfo‘) as f:        for line in f:            meminfo[line.split(‘:‘)[0]] = line.split(‘:‘)[1].strip()    return meminfoif __name__==‘__main__‘:    print(meminfo())    meminfo = meminfo()    print(‘Total memory: {0}‘.format(meminfo[‘MemTotal‘]))    print(‘Free memory: {0}‘.format(meminfo[‘MemFree‘]))

 

網路統計資訊

/proc/net/dev檔案

#!/usr/bin/env pythonfrom __future__ import print_functionfrom collections import namedtupledef netdevs():    """     RX and TX bytes for each of the network devices     """    with open(‘/proc/net/dev‘) as f:        net_dump = f.readlines()    device_data={}    data = namedtuple(‘data‘,[‘rx‘,‘tx‘])    for line in net_dump[2:]:        line = line.split(‘:‘)        if line[0].strip() != ‘lo‘:            device_data[line[0].strip()] = data(float(line[1].split()[0])/(1024.0*1024.0),                                                float(line[1].split()[8])/(1024.0*1024.0))       return device_dataif __name__==‘__main__‘:    print(netdevs())    netdevs = netdevs()    for dev in netdevs.keys():        print(‘{0}: {1} MiB {2} MiB‘.format(dev, netdevs[dev].rx, netdevs[dev].tx)) 

 

進程資訊

/proc目錄包含了所有正啟動並執行進程目錄。這些目錄的名字和進程的標識符是一樣的。所以,如果你遍曆/proc目錄下那些使用數字作為它們的名字的目錄,你就會獲得所有現在正在啟動並執行進程列表。

#!/usr/bin/env python"""List of all process IDs currently active"""from __future__ import print_functionimport osdef process_list():    pids = []    for subdir in os.listdir(‘/proc‘):        if subdir.isdigit():            pids.append(subdir)    return pidsif __name__==‘__main__‘:    print(process_list())    pids = process_list()    print(‘Total number of running processes:: {0}‘.format(len(pids)))

 

塊裝置

系統中的塊裝置可以從/sys/block目錄中找到。因此可能會有/sys/block/sda、/sys/block/sdb等這樣的目錄。

#!/usr/bin/env python"""Read block device data from sysfs"""from __future__ import print_functionimport globimport reimport os# Add any other device pattern to read fromdev_pattern = [‘sd.*‘,‘mmcblk*‘]def size(device):    nr_sectors = open(device+‘/size‘).read().rstrip(‘\n‘)    sect_size = open(device+‘/queue/hw_sector_size‘).read().rstrip(‘\n‘)    # The sect_size is in bytes, so we convert it to GiB and then send it back    return (float(nr_sectors)*float(sect_size))/(1024.0*1024.0*1024.0)def detect_devs():    for device in glob.glob(‘/sys/block/*‘):        for pattern in dev_pattern:            if re.compile(pattern).match(os.path.basename(device)):                print(‘Device:: {0}, Size:: {1} GiB‘.format(device, size(device)))if __name__==‘__main__‘:    detect_devs()

 

參考:http://www.oschina.net/translate/linux-system-mining-with-python

python3 擷取Linux系統資訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.