一、简介
psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。目前支持32位和64位的Linux、Windows、OS X、FreeBSD和Sun Solaris等操作系统,支持从2.4到3.7的Python版本,目前最新版本5.4.6。通常我们获取操作系统信息往往用Shell脚本来实现,如获取当前物理内存总大小及已使用大小,shell命令如下:
1、获取物理内存total值:
[root@master ~]# free -m |grep Mem|awk '{print $2}' 972
2、获取物理内存Used值:
[root@master ~]# free -m |grep Mem|awk '{print $3}' 178
相比较而言,使用psutil库实现则更加明了。psutil大小单位一般都采用字节,例如:
二、安装及使用psutil
1、安装psutil
pip3 install psutil
2、进入python
python
3、导入psutil
>>> import psutil
三、获取系统性能信息
采集系统的基本性能信息包括CPU、内存、硬盘、网络等,可以完整描述当前系统的运行状态及质量。psutil已经封装了这些方法,用户可以根据自身的应用场景,调用相应的方法来满足需求,非常的实用。
(1)CPU信息
Linux操作系统的CPU利用率有以下几个部分:
User Timer 执行用户进程时间百分比;
System Timer 执行内核进程和中断时间的百分比;
Wait IO 由于IO等待而使CPU处于idle(空闲)状态的时间百分比;
Idle CPU处于idle状态的时间百分比。
我们可以使用Python的psutil.cpu_times()方法可以简单地得到这些信息,同时也可以获取CPU的硬件相关信息,比如CPU的物理个数与逻辑个数,具体见下面的操作例子:
解释:
(2)、内存信息
Linux系统内存利用率信息设计total(内存总数)、used(已使用内存数)、free(空闲内存数)、buffers(缓冲使用数)、cache(缓存使用数)、swap(交换分区使用数)等,分别使用psutil.virtual_memory()与psutil.swap_memory()方法获取这些信息,具体见下面的操作例子:
解释:
(3)磁盘信息
在系统的所有磁盘中,我们更加关注磁盘的利用率及IO信息,其中磁盘利用率使用psutil.disk_usage方法来获取。磁盘IO信息包括read_count(读IO数)、write_count(写IO数)、read_bytes(IO读字节数)、write_bytes(IO写字节数)、read_time(磁盘读时间)、write_time(磁盘写时间等)。这些IO信息可以使用psutil.disk_io_counters()获取,具体见下面的操作例子:
解释:
(4)网络信息
系统的网络信息与磁盘IO类似,涉及几个关键点,包括bytes_sent(发送字节数)、bytes_recv(接收字节数)、packet_sent(发送数据包数)、packets_recv(接收数据包数)等。这些网络信息使用psutil.net_io_counters()方法获取,具体见下面的操作例子:
解释
(5)其他信息模块
除了前面介绍的几个获取系统基本信息的方法,psutil模块还支持获取用户登录、开机时间等信息,具体见下面的操作例子:
其他用法请参见:https://psutil.readthedocs.io/en/latest/