python获取eth0_Python获取系统基础信息psutil模块使用

通常linux系统的基础信息如内存、cpu等这些都是通过shell来获取。不过python的psutil模块把shell查看系统基础信息的功能都包装了下,使用更加简单,功能丰富。

psutil安装

地址:https://pypi.python.org/pypi?:action=display&name=psutil

下载源码后安装

wget https://pypi.python.org/packages/source/p/psutil/psutil-3.2.1.tar.gz --no-check-certificate

tar zxvf psutil-3.2.1.tar.gz

cd psutil-3.2.1

sudo python setup.py install

获取系统基本信息的使用

CPU信息

linux系统中的cpu主要有几个部分组成,可以参考之前《Linux系统查看CPU使用率的几个命令》这篇文章。

使用cpu_times方法获取cpu的完整信息,如下所示。

>>> psutil.cpu_times()

scputimes(user=406604.31, nice=9686.8199999999997, system=664003.88, idle=19646386.609999999, iowait=715788.23999999999, irq=165388.04000000001, softirq=47710.230000000003, steal=0.0, guest=0.0)

获取单个数据,如用户的cpu时间

>>> psutil.cpu_times().user

406604.59999999998

获取cpu物理和逻辑个数,默认logical值为True 。

>>> psutil.cpu_count()

4

>>> psutil.cpu_count(logical=False)

2

内存信息

内存信息的获取主要使用virtual_memory方法。swap使用就用swap_memory方法。

>>> mem=psutil.virtual_memory()

>>> mem

svmem(total=1047543808L, available=717537280L, percent=31.5, used=1018589184L, free=28954624L, active=441827328, inactive=449007616, buffers=218214400L, cached=470368256)

>>> mem.total

1047543808L

>>> print (mem.total/8/1024)

127874

>>> print (mem.total/1024/1024)

999

其中percent表示实际已经使用的内存占比,即(1047543808-717537280)/1047543808*100% 。available表示还可以使用的内存。

磁盘信息

磁盘信息主要有两部分,一个是磁盘的利用率,一个是io,他们分别可以通过disk_usage和disk_io_counters方法获取。

如下先获取分区信息,然后看下根分区的使用情况。

>>> psutil.disk_partitions()

[sdiskpart(device='/dev/mapper/zhang-root', mountpoint='/', fstype='ext4', opts='rw,errors=remount-ro'), sdiskpart(device='/dev/sda1', mountpoint='/boot', fstype='ext2', opts='rw')]

>>> psutil.disk_usage('/')

sdiskusage(total=43785617408, used=15221456896, free=26339921920, percent=34.799999999999997)

>>>

默认disk_io_counters方法获取的是硬盘总的io数和读写信息,如果需要获取单个分区的io和读写信息加上"perdisk=True"参数。

>>> psutil.disk_io_counters()

sdiskio(read_count=11722336, write_count=136652693, read_bytes=263345571840, write_bytes=848806625280, read_time=66298670, write_time=2741668730)

>>> psutil.disk_io_counters(perdisk=True)

{'dm-1': sdiskio(read_count=71443, write_count=102745, read_bytes=292630528, write_bytes=420843520, read_time=684480, write_time=44471270), 'sda5': sdiskio(read_count=5305289, write_count=29095024, read_bytes=131662169088, write_bytes=424404525056, read_time=28226110, write_time=641655840), 'sda2': sdiskio(read_count=2, write_count=0, read_bytes=2048, write_bytes=0, read_time=30, write_time=0), 'dm-0': sdiskio(read_count=6343081, write_count=107455225, read_bytes=131369276416, write_bytes=423983681536, read_time=37361670, write_time=2055542540), 'sda1': sdiskio(read_count=2521, write_count=166, read_bytes=21493760, write_bytes=172032, read_time=26380, write_time=1810)}

>>>

网络信息

网络io和磁盘io使用方法差不多,主要使用net_io_counters方法,如果需要获取单个网卡的io信息,加上pernic=True参数。

>>> psutil.net_io_counters()

snetio(bytes_sent=470306251621, bytes_recv=504672135942, packets_sent=1231438305, packets_recv=1243021636, errin=0, errout=0, dropin=0, dropout=0)

>>> psutil.net_io_counters(pernic=True)

{'lo': snetio(bytes_sent=53311613686, bytes_recv=53311613686, packets_sent=121127899, packets_recv=121127899, errin=0, errout=0, dropin=0, dropout=0), 'eth1': snetio(bytes_sent=209756860205, bytes_recv=193733233062, packets_sent=356636797, packets_recv=391137413, errin=0, errout=0, dropin=0, dropout=0), 'eth0': snetio(bytes_sent=207237886306, bytes_recv=257627387945, packets_sent=753674621, packets_recv=730757206, errin=0, errout=0, dropin=0, dropout=0)}

>>>

以上是psutil模块获取linux系统基础信息的几个方法,大概常用的数据就这些。当然其他用法还有很多,详情可以参考他的官方文档。

网址:http://pythonhosted.org/psutil/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值