python系统基础信息模块psutil详解

python struggling 1845次浏览 0个评论

Python psutil模块能,实现查看cpu的信息、查看内存信息、查看系统启动时间、查看网卡信息等。其能够跨平台,可以用来做系统监控,性能分析,进程管理。

images (1)

下面是一个简单的示例,在python3下面测试过:

<code>
#!/usr/bin/python
#coding:utf-8
import datetime
import psutil

'''
     查看系统基本信息
     www.tianfeiyu.com
'''

def get_cpu_info():  #获取cpu状态
    print('\033[1;31;40m-------------------------cpu状态信息-----------------------------------\033[0m')
    print('cpu 物理逻辑为 :%s' % psutil.cpu_count())
    print('cpu 物理个数为 :%s' % psutil.cpu_count(logical=False))
    print('cpu 执行用户进程时间百分比 :%% %s' % (psutil.cpu_times_percent().user) )
    print('cpu 处于空闲时间状态百分比 :%% %s' % (psutil.cpu_times_percent().idle) )
    print('cpu 执行内核进程和中断时间百分比 :%%%s' % psutil.cpu_times_percent().system)
    print('cpu 处于io等待状态百分比 :%%%s' % psutil.cpu_times_percent().iowait)
def get_mem_info():   #获取内存状态信息
    print('\033[1;31;40m-------------------------内存状态信息-----------------------------------\033[0m')   
    mem = psutil.virtual_memory()
    print('内存总大小:%.1fG' % (mem.total/1024/1024/1024))
    print('空闲内存大小:%.2fG' % (mem.free/1024/1024/1024))
    swap = psutil.swap_memory()
    print('swap分区总大小:%.1fG' % (swap.total/1024/1024/1024))
    print('swap空闲分区大小:%.1fG' % (swap.free/1024/1024/1024))
    
def get_disk_info():   #获取磁盘信息
    print('\033[1;31;40m-------------------------磁盘信息-----------------------------------\033[0m')   
    for i in psutil.disk_partitions():
        print(i)
        disk_usage = psutil.disk_usage(i[1])
        print('%s 使用情况如下:' % i[1])
        print('----------分区总大小:%.1fG' % (disk_usage[0]/1024/1024/1024))   
        print('----------已使用空间:%.1fG' % (disk_usage[1]/1024/1024/1024)) 
        print('----------剩余空间:  %.1fG' % (disk_usage[2]/1024/1024/1024))
def get_network_info():   #获取网络信息
    print('\033[1;31;40m-------------------------网络信息-----------------------------------\033[0m') 
    network = psutil.net_io_counters()
    print('已发送字节数:%.1fM' % (network[0]/1024/1024/1024))
    print('已接收字节数:%.1fM' % (network[1]/1024/1024/1024))
    print('已发送数据包个数:%.1f' % network[2])        
    print('已接收数据包个数:%.1f' % network[3])
def get_user_info():    #获取用户信息    
    print('\033[1;31;40m-------------------------用户信息-----------------------------------\033[0m') 
    print('系统开机时间为:%s' % datetime.datetime.fromtimestamp(psutil.boot_time()).strftime('%Y-%m-%d %H:%M:%S'))
    user = psutil.users()
    for i in range(0,len(user)):    
        print('用户名 :%s,终端 :%s,主机 :%s,登录时间 %s' %(user[i][0],user[i][1],user[i][2],datetime.datetime.fromtimestamp(user[i][3]).strftime('%Y-%m-%d %H:%M:%S')))
        
if  __name__ == '__main__' :
    get_cpu_info()
    get_mem_info()
    get_disk_info()
    get_network_info()
    get_user_info()
</code>

运行结果:

<code>
[root@sta psutil-py]# python test.py 
-------------------------cpu状态信息-----------------------------------
cpu 物理逻辑为 :4
cpu 物理个数为 :4
cpu 执行用户进程时间百分比 :% 10.0
cpu 处于空闲时间状态百分比 :% 88.0
cpu 执行内核进程和中断时间百分比 :%1.0
cpu 处于io等待状态百分比 :%1.0
-------------------------内存状态信息-----------------------------------
内存总大小:3.7G
空闲内存大小:0.10G
swap分区总大小:3.9G
swap空闲分区大小:2.4G
-------------------------磁盘信息-----------------------------------
sdiskpart(device='/dev/mapper/vg_xiyousta-lv_root', mountpoint='/', fstype='ext4', opts='rw')
/ 使用情况如下:
----------分区总大小:393.6G
----------已使用空间:46.3G
----------剩余空间:  327.3G
sdiskpart(device='/dev/sda1', mountpoint='/boot', fstype='ext4', opts='rw')
/boot 使用情况如下:
----------分区总大小:0.5G
----------已使用空间:0.1G
----------剩余空间:  0.4G
sdiskpart(device='/dev/mapper/vg_xiyousta-lv_home', mountpoint='/home', fstype='ext4', opts='rw')
/home 使用情况如下:
----------分区总大小:9.7G
----------已使用空间:0.0G
----------剩余空间:  9.2G
-------------------------网络信息-----------------------------------
已发送字节数:778.4M
已接收字节数:1700.0M
已发送数据包个数:2225061642.0
已接收数据包个数:1953071471.0
-------------------------用户信息-----------------------------------
系统开机时间为:2015-11-04 20:46:00
用户名 :root,终端 :pts/3,主机 :192.168.1.84,登录时间 2015-11-25 16:06:24
用户名 :root,终端 :pts/4,主机 :192.168.1.84,登录时间 2015-11-25 16:10:40
用户名 :root,终端 :pts/5,主机 :192.168.1.84,登录时间 2015-11-25 16:32:00
[root@sta psutil-py]# 
</code>

DevOps-田飞雨 》》转载请注明源地址
喜欢 (0)or分享 (0)
发表我的评论
取消评论
*

表情 贴图 加粗 链接 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址