系统监控之python


CPU信息
/proc/cpuinfo文件包含了你的系统处理器单元的信息。例如,这里就是python版的linux命令cat /proc/cpuinfo所做的事:
#! /usr/bin/env python
""" print out the /proc/cpuinfo
file
"""
from __future__ import print_function
with open('/proc/cpuinfo') as f:
for line in f:
print(line.rstrip('\n'))
当你使用Python 2 或者 Python 3执行这个程序时,你会在屏幕上看到所有/proc/cpuinfo的内容(在上
面的程序里,rstrip()方法用来删除每行末尾的换行符)

在下面的代码里列举了使用startwith()字符串方法来显示你的处理器单元的模式。

#! /usr/bin/env python

""" Print the model of your
processing units

"""

from __future__ import print_function

with open('/proc/cpuinfo') as f:
for line in f:
# Ignore the blank line separating the information&nb
内存信息
和/proc/cpuinfo相似,文件/proc/meminfo包含了你电脑的主存的信息
#!/usr/bin/env python

from __future__ import print_function

with open('/proc/meminfo') as f:
for line in f:
if line.strip():
if line.rstrip('\n').startswith('MemTotal'):
Total_memory = lin
下面的这个程序创建了一个使用这个文件的内容填充的字典。

#!/usr/bin/env python

from __future__ import print_function
from collections import OrderedDict

def meminfo():
''' Return the information in /proc/meminfo
as a dictionary '''
meminfo=OrderedDict()

with open('/proc/meminfo') as f:
for line&nb
网络统计信息
/proc/net/dev文件让这些信息可用。如果你检查了这个文件的内容,你就会注意到头一两行包含了头信息等等,这里我们所感兴趣的就是他哦难过不同的网络设备提取出总发送数据和接收数据。下面的代码展示了怎么从/proc/net/dev文件中提取出这些信息。
#!/usr/bin/env python
from __future__ import print_function
from collections import namedtuple

def netdevs():
''' RX and TX bytes for each of the network devices '''

with open('/proc/net/dev') as f:
&n
if __name__=='__main__':

netdevs = netdevs()
for dev in netdevs.keys():
print('{0}: {1} MiB {2} MiB'.format(dev, netdevs[dev].rx, netdevs[dev].tx))
当你运行上面的程序,下面这个输出就会显示从你最近重启之后网络设备总接收和发送的数据,单位为兆。
em1: 0.0 MiB 0.0 MiB
wlan0: 2651.40951061 MiB 183.173976898 MiB
进程信息
/proc目录包含了所有正运行的进程目录。这些目录的名字和进程的标识符是一样的。所以,如果你遍历/proc目录下那些使用数字作为它们的名字的目录,你就会获得所有现在正在运行的进程列表。在下面的代码中process_list()函数返回所有现在正在运行的进程的标识符列表。当你执行这个程序后,这个列表的长度就是在系统上运行的总进程数。
#!/usr/bin/env python
"""
List of all process IDs currently active
"""

from __future__ import print_function
import os
def process_list():

pids = []
for subdir in os.listdir('/proc'):
if subdir.isdigit():
pids.append(subdir)
&n
块设备
下一个程序通过读sysfs虚拟文件系统列出所有块设备。你系统中的块设备可以从/sys/block目录中找到。因此可能会有/sys/block/sda、/sys/block/sdb等这样的目录。为了获取所有这些设备,我们使用正则表达式对/sys/block目录进行扫描提取感兴趣的块设备。
#!/usr/bin/env python

"""
Read block device data from sysfs
"""

from __future__ import print_function
import glob
import re
import os

# Add any other device pattern to read from
dev_pattern = ['sd.*','mmcblk*']

def size(device):
nr_sectors = open(device+'/size').read().rstrip('\n')
sect_s
如果你运行该程序,你将会看到下述类似的输出:
Device:: /sys/block/sda, Size:: 465.761741638 GiB
Device:: /sys/block/mmcblk0, Size:: 3.70703125 GiB
注:
glob(pathname)     Return a list of paths matching a pathname pattern
re - Support for regular expressions (RE)

上一篇 下一篇

评论



分享

最新加入

最新评论

隋中缘: @嘉嘉tiffany 性感乳神。 查看原文 06月13日 16:16