大家都知道,linux里一切皆为文件,在linux/unix的根目录下,有个/proc目录,这个/proc 是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做“/proc”),这个伪文件系统允许与内核内部数据结构交互,获取有关进程的有用信息,在运行中(on the fly)改变设置(通过改变内核参数)。与其他文件系统不同,/proc 存在于内存而不是硬盘中。proc 文件系统提供的信息如下:
•进程信息:系统中的任何一个进程,在 proc 的子目录中都有一个同名的进程 ID,可以找到 cmdline、mem、root、stat、statm,以及 status。某些信息只有超级用户可见,例如进程根目录。每一个单独含有现有进程信息的进程有一些可用的专门链接,系统中的任何一个进程都有一个单独的自链接指向进程信息,其用处就是从进程中获取命令行信息。
•系统信息:如果需要了解整个系统信息中也可以从/proc/stat 中获得,其中包括 CPU 占用情况、磁盘空间、内存对换、中断等。
•CPU 信息:利用/proc/CPUinfo 文件可以获得中央处理器的当前准确信息。
•负载信息:/proc/loadavg 文件包含系统负载信息。
•系统内存信息:/proc/meminfo 文件包含系统内存的详细信息,其中显示物理内存的数量、可用交换空间的数量,以及空闲内存的数量等。
这样,你可以通过cat 命令查看相关信息:
liujl@liujl-ThinkPad-Edge-E431:~/mybash$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 58 model name : Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz stepping : 9 microcode : 0x15 cpu MHz : 1200.000 cache size : 3072 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 2 apicid : 0
。。。 。。。
liujl@liujl-ThinkPad-Edge-E431:~/mybash$ cat /proc/meminfo MemTotal: 3593316 kB MemFree: 2145916 kB Buffers: 93372 kB Cached: 684864 kB SwapCached: 0 kB Active: 706564 kB Inactive: 554052 kB Active(anon): 483996 kB Inactive(anon): 178388 kB Active(file): 222568 kB Inactive(file): 375664 kB
。。 。 。。。
那下面介绍如何通过python编程的方式获取需求的信息。
1、获取cpu的信息
#! /usr/bin/env python #Filename:CPU1.py from __future__ import print_function from collections import OrderedDict import pprint def CPUinfo(): '''Return the info in /proc/cpuinfo as a dirctionary in the follow 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 CPUinfo if __name__ == '__main__': CPUinfo = CPUinfo() for processor in CPUinfo.keys(): print('CPUinfo[{0}]={1}'.format(processor,CPUinfo[processor]['model name']))
运行如下:
liujl@liujl-ThinkPad-Edge-E431:~/mypython$ python CPU1.py CPUinfo[proc0]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz CPUinfo[proc1]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz CPUinfo[proc2]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz CPUinfo[proc3]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
2、获取内存信息
#! /usr/bin/env python #Filename:meminfo.py from __future__ import print_function from collections import OrderedDict def meminfo(): '''return the info of /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 meminfo if __name__ == '__main__': meminfo = meminfo() print("Total memory:{0}".format(meminfo['MemTotal'])) print("Free memory:{0}".format(meminfo['MemFree']))
结果如下:
liujl@liujl-ThinkPad-Edge-E431:~/mypython$ python meminfo.py Total memory:3593316 kB Free memory:2113712 kB
使用python获取CPU和内存信息的思路与实现(linux系统)
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@