Psutil – 獲取運行進程和系統利用率信息的庫

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。 我們將繼續看看它的一些 example 用途。

如何使用 Psutil

首先,讓我們了解如何在系統終端上運行 python 命令。 Python 提供了一個本地 shell,只需運行“python”命令,它就會帶你到 shell,在那裡你可以執行 python 相關的命令。 下面的截圖將進一步證明我們的這一點。

現在我們將在這個 shell 中運行與 Psutil 庫相關的所有命令。

為了以百分比形式找到 CPU 使用率,我們需要在 Python 控制台中運行以下兩個命令。 第一個命令將導入 psutil 庫,下一個命令將用於返回當前 CPU 消耗的百分比值。

import psutil
psutil.cpu_percent(interval=1)

以下屏幕截圖應進一步闡明此概念。

以下命令將返回我們 Linux 系統的 CPU 總數。 我們已經包括 example 下面也輸出。

psutil.cpu_count()

>> psutil.cpu_count()
1

如果要查看 CPU 頻率參數的值,請在 Python shell 上使用以下命令。

psutil.cpu_freq()

為了監控系統的虛擬內存消耗,請在控制台中使用以下命令。

import psutil
mem = psutil.virtual_memory()
mem

這是上述代碼段的示例輸出。

[email protected]:~$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] 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 還可以很好地監視系統的硬件組件。 為了 example,您可以使用以下參數找到有關係統硬件溫度傳感器的詳細信息。

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()

這是 example 此命令的輸出:

>> 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 的進程是否存在。 同樣,它還有許多其他功能,這些功能對於從系統進程中獲得所需的輸出非常有幫助。

Psutil 是非常有用的實用程序,它提供了大量可用於正確監控系統的函數/API。 您會驚訝地發現,目前超過 4600 個開源項目在後端使用 Psutil 來執行許多系統資源監控任務。

Psutil 也被移植到許多其他語言中,值得注意的是:Ruby、C、Go、Node、Rust。 有關其便攜性的完整詳細信息可以在 GitHub.

希望您喜歡這篇文章,Psutil 提供了很多東西,您應該能夠找到許多令人興奮的功能/API,您可以每天使用它們來提高系統性能。 如果您有任何問題或反饋,請隨時在文章的評論部分告訴我們。