一 Python自动化运维笔记:系统性能信息模块psutil

运行环境:.6,RS1,.2
前言
最近开始接触自动化运维,网上有不少教学资源可以供我们相对系统地去学习 。而我是使用的优秀运维工程师刘天斯所著《自动化运维-技术与最佳实践》一书,博文中的大部分笔记也是摘抄自这本书,另外会有自己平时学习的一些总结,写成笔记原因有三:
关于系统信息模块
库能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息 。主要用于系统监控,分析和限制系统资源进程的管理 。目前支持32位和64位的Linux、、OSX(现在改名为MacOS,苹果家桌面系统),、等操作系统 。
现在时间是2017年9月30日,在网上查询到的版本信息,该模块可以支持.4到目前最新的.6版本 。
因为现在最常用的.7和.6都内置了pip软件管理工具,所以我们可以直接使用以下指令进行安装
pip install psutil
值得一提的是如果同时安装了和,则如果需要安装到上应该执行如下命令:
pip3 install psutil
获取系统信息
在Linux的shell中我们通常使用如下指令来获取物理内存total值和物理内存uesed的值:
[root@CentOS ~]# free -m | grep Mem | awk '{print $2,$3}'#物理内存total值\物理内存uesed值1006 143
然而在使用库时更加简单明了 。
>>> import psutil>>> mem = psutil.virtual_memory()>>> mem.total# 物理内存total值,单位为字节6336098304>>> mem.used# 物理内存uesed值,单位为字节3943735296
获取CPU信息
psutil.cpu_times()# 获取CPU相关的完整信息scputimes(user=21465.578125, system=19666.59375, idle=287203.375, interrupt=910.59375, dpc=436.75000190734863)psutil.cpu_times().user # 获取单项信息21475.96875psutil.cpu_count()# 获取CPU的逻辑个数,默认参数logical = True4psutil.cpu_count(logical = False)# 获取CPU的物理个数2
获取内存信息
>>> psutil.virtual_memory()# 获取内存完整信息svmem(total=6336098304, available=1639055360, percent=74.1, used=4697042944, free=1639055360)>>> psutil.swap_memory()# 获取swap分区相关信息,其实就是相当于我们Windows上说的虚拟内存(个人理解)sswap(total=7342731264, used=5996646400, free=1346084864, percent=81.7, sin=0, sout=0)
获取其它相关信息
>>> psutil.disk_partitions()# 获取磁盘完整信息[sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='D:\\', mountpoint='D:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='E:\\', mountpoint='E:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='F:\\', mountpoint='F:\\', fstype='', opts='cdrom'), sdiskpart(device='H:\\', mountpoint='H:\\', fstype='', opts='removable')]# ------------------------------------------------------------->>> psutil.disk_io_counters()# 获取磁盘总的IO个数、读写信息sdiskio(read_count=1416268, write_count=1952341, read_bytes=59678343168, write_bytes=60500517888, read_time=503151605, write_time=1266966502)# ------------------------------------------------------------->>> psutil.net_io_counters()# 获取网络总的IO信息snetio(bytes_sent=22999076, bytes_recv=853131051, packets_sent=323119, packets_recv=592483, errin=0, errout=0, dropin=0, dropout=0)# -------------------------------------------------------------->>> psutil.users()# 获取当前用户登录信息[suser(name='imwoo', terminal=None, host='0.0.0.0', started=1506702487.0, pid=None)]