Psutil-提取运行过程和系统利用率信息的库

时间:2020-03-05 15:29:12  来源:igfitidea点击:

Psutil是一个基于python的库,它提供了一个接口来监视计算机系统的资源。
我们可以使用此实用程序及其可用的API来查找有关当前正在运行的进程,其资源消耗(如内存,网络和磁盘使用情况等)的所有详细信息。
它是一个跨平台应用程序,可在所有流行的操作系统(如Linux,Microsoft Windows)上运行,MacOS和FreeBSD。
当前,我们可能正在使用许多不同的实用程序/命令来监视系统进程,但是Psutil将诸如top,ps,netstat,lsof,df等命令的功能组合到一个位置。
它可以在32位和64位系统上运行,并且是一个经过优化的库。
它使用最有效的方式来收集所需的系统信息。
在本教程中,我们将学习该实用程序的安装和使用过程。
如果我们具有编程或者系统脚本编写背景,则应该能够轻松学习此实用程序的工作原理。
喝杯咖啡,让我们开始吧:-)

如何在Ubuntu 16.10/16.04上安装Psutil

为了演示起见,我们将使用Ubuntu最新版本16.10来安装和显示此库的用法。
相同的指令集应适用于任何较旧版本的基于Ubuntu和Debian的系统。
安装此库的最简单方法是使用pip。
在系统终端上运行以下命令以安装pip实用程序。

sudo apt install python-pip

一旦安装了pip,请运行以下命令来安装psutil。

sudo pip install psutil

恭喜你! Psutil已成功安装。
我们将继续看一些示例用法。

如何使用Psutil

首先,让我们了解如何在系统终端上运行python命令。
Python提供了本机shell,只需运行“ python”命令,它便会带我们到可以执行python相关命令的shell。
以下屏幕截图将进一步说明我们的观点。

现在,我们将在此Shell中运行与Psutil库相关的所有命令。

为了找到百分比的CPU使用率,我们需要在Python控制台中运行以下两个命令。
第一个命令将导入psutil库,下一个命令将用于以百分比形式返回CPU当前消耗的值。

import psutil
psutil.cpu_percent(interval=1)

以下屏幕截图应进一步阐明这一概念。

以下命令将返回我们Linux系统的CPU总数。
我们还包括以下示例输出。

psutil.cpu_count()
>> psutil.cpu_count()
1

如果要查看CPU频率参数的值,请在Python Shell上使用以下命令。

psutil.cpu_freq()

为了监视系统的虚拟内存消耗,请在控制台中使用以下命令。

import psutil
mem = psutil.virtual_memory()
mem

这是上述代码段的示例输出。

aun@ubuntu:~$python
Python 2.7.12 (default, Nov 19 2015, 06:48:10)
[GCC 5.4.0 20150609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import psutil
>>> mem = psutil.virtual_memory()
>>> mem
svmem(total=1022431232, available=315588608, percent=69.1, used=689242112, free=26132480, active=370671616, inactive=366432256, buffers=17944576, cached=289112064, shared=2854912)
>>>

为了查看交换内存消耗,请在控制台上使用“ psutil.swap_memory()”函数。

>> psutil.swap_memory()
sswap(total=1071640576, used=137801728, free=933838848, percent=12.9, sin=14856192, sout=146563072)

让我们使用Psutil执行一些与磁盘相关的操作。
运行以下代码片段以查找有关系统硬盘分区的信息。

import psutil
psutil.disk_partitions()

输出示例:

>>> import psutil
>>> psutil.disk_partitions()
[sdiskpart(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw,relatime,errors=remount-ro,data=ordered')]
>>>

以下代码段将为我们提供系统根分区上当前的磁盘使用情况。

import psutil
psutil.disk_usage('/')

输出示例:

> import psutil
>>> psutil.disk_usage('/')
sdiskusage(total=19945680896, used=4598263808, free=14310637568, percent=24.3)
>>>

Psutil还可以很好地监视系统的硬件组件。
例如,我们可以使用以下参数找到有关系统的硬件温度传感器的详细信息。

psutil.sensors_temperatures()

它将显示如下输出,我们可以在bash或者编程脚本中进一步使用此输出来生成任何类型的触发器。

>>> psutil.sensors_temperatures()
{'coretemp': [shwtemp(label='Physical id 0', current=100.0, high=100.0, critical=100.0), shwtemp(label='Core 0', current=100.0, high=100.0, critical=100.0)]}

现在让我们更多地了解如何查找有关正在运行的进程的详细信息,以下命令将显示我们Linux系统上当前正在运行的进程的进程ID(PID)。

import psutil
psutil.pids()

这是此命令的示例输出:

>> import psutil
>>> psutil.pids()
[1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 28, 29, 30, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 80, 95, 96, 144, 145, 146, 147, 148, 149, 150, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, ......]

psutil.pid_exists(pid)是另一个命令,用于标识是否存在具有指定ID的任何进程。
同样,它还具有许多其他功能,这些功能对于从系统过程中获得所需的输出非常有帮助。