天天看點

psutil(系統系能資訊子產品)

psutil是一個跨平台,能夠輕松實作擷取系統運作的程序和使用率(包括CPU、記憶體、磁盤、網絡等)資訊。主要應用域系統監控,分析和限制系統資源及程序管理。它實作了同等指令行工具提供的功能,如ps/top/lsof/netstat/who/df/kill/nice/free/nice/ionstat/iotop/uptime/pidof/tty/taskset/pmap等。支援從2.4到3.4的python版本。

psutil大小機關一般都采用位元組。 

安裝psutil

wget https://pypi.python.org/packages/source/p/psutil/psutil-2.0.0.tar.gz --no-check-certificate
tar -xzvf psutil-2.0.0.tar.gz
cd psutil-2.0.0
python setup.py install   #psutil/_psutil_linux.c:12:20: 緻命錯誤:Python.h:沒有那個檔案或目錄
yum install python-devel.x86_64      

1、cpu資訊

linux作業系統的CPU使用率有以下幾個部分:

user time,執行用護程序的時間百分比

system time,執行核心程序和中伏案的時間百分比

wait io,由于IO等待而使CPU處于idle(空閑)狀态的時間百分比;

Idle,CPU處于idle狀态的時間百分比

   我們使用python的psutil.cpu_times()方法可以非常簡單地得到這些資訊,同僚也可以擷取CPU的硬體相關資訊,比如CPU的硬體相關資訊,比如CPU的實體個數域邏輯個數。

>>> psutil.cpu_times()                  #檢視cpu所有資訊
scputimes(user=762.76, nice=4.47, system=428.97, idle=4012472.08, iowait=207.27, irq=0.0, softirq=7.07, steal=0.0, guest=0.0, guest_nice=0.0)
>>> psutil.cpu_times().user             #檢視使用者的cpu時間比
762.77
>>> psutil.cpu_count()                  #檢視cpu邏輯個數
2
>>> psutil.cpu_count(logical=False)     #檢視cpu實體個數
2      

2、記憶體資訊

  linux系統的記憶體使用率資訊涉及total(記憶體總數)、used(已使用的記憶體數)、free(空閑記憶體數)、buffers(緩沖使用數)、cache(緩存使用數)、swap(交換分區使用數)等。分别使用psutil.virtual_memory()與psutil.swap_memory()方法擷取這些資訊。

>>> import psutil
>>> mem = psutil.virtual_memory()           #使用psutil.virtual_memory方法擷取記憶體完整資訊
>>> mem
svmem(total=3975487488L, available=2716561408L, percent=31.7, used=2024685568L, free=1950801920L, active=1328680960, inactive=484872192, buffers=1433600L, cached=764325888)
>>> mem.total                               #擷取記憶體總數
3975487488L
>>> mem.free                                #擷取空閑記憶體
1950801920L
>>> psutil.swap_memory()                    #擷取SWAP分區資訊
sswap(total=1073737728L, used=0L, free=1073737728L, percent=0.0, sin=0, sout=0)
>>>      

3、磁盤資訊

 磁盤使用率使用psutil.disk_usage方法擷取,

 磁盤IO資訊包括read_count(讀IO數),write_count(寫IO數),read_bytes(IO寫位元組數),read_time(磁盤讀時間),write_time(磁盤寫時間),這些IO資訊用psutil_io_counters()擷取。

psutil.disk_io_counters()        #擷取磁盤總的IO個數
psutil.disk_partitions()        #擷取磁盤的完整資訊
psutil.disk_usage('/')   #擷取/分區(參數)的使用狀态
psutil.disk_io_counters(perdisk=True)    #perdisk=True參數擷取單個分區IO個數、讀寫資訊      

4、讀取網絡資訊

  網絡資訊與磁盤IO資訊類似,涉及到幾個關鍵點,包括byes_sent(發送位元組數),byte_recv=xxx(接受位元組數),pack-ets_sent=xxx(發送位元組數),pack-ets_recv=xxx(接收資料包數),這些網絡資訊用psutil.net_io_counters()方法擷取。

psutil.net_io_counters()  #擷取網絡總IO資訊
psutil.net_io_counters(pernic=True)     #pernic=True輸出每個網絡接口的IO資訊      

5、擷取目前系統使用者登入資訊

psutil.users()      #擷取目前登入系統的使用者資訊
import psutil,datetime
psutil.boot_time()     #擷取開機時間,以linux時間格式傳回
datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M: %S") #轉換成自然時間格式      

6、系統程序管理方法

  擷取目前系統的程序資訊,擷取目前程式的運作狀态,包括程序的啟動時間,檢視設定CPU親和度,記憶體使用率,IO資訊、socket連接配接、線程數等。

(1)擷取程序資訊

  檢視系統全部程序

psutil.pids()    #列出所有程序ID
 p = psutil.Process(2423)     #執行個體化一個process對象,參數為一程序PID
 p.name()   #程序名
 p.exe()    #程序的bin路徑
 p.cwd()    #程序的工作目錄絕對路徑
 p.status()   #程序狀态
 p.create_time()  #程序建立時間
 p.uids()    #程序uid資訊
 p.gids()    #程序的gid資訊
 p.cpu_times()   #程序的cpu時間資訊,包括user,system兩個cpu資訊
 p.cpu_affinity()  #get程序cpu親和度,如果要設定cpu親和度,将cpu号作為參考就好
 p.memory_percent()  #程序記憶體使用率
 p.memory_info()    #程序記憶體rss,vms資訊
 p.io_counters()    #程序的IO資訊,包括讀寫IO數字及參數
 p.connectios()   #傳回程序清單
 p.num_threads()  #程序開啟的線程數      
from subprocess import PIPE
p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"],stdout=PIPE)
p.name()
p.username()
p.communicate()
p.cpu_times()           #得到程序運作的CPU時間      
上一篇: zabbix安裝
下一篇: 清單簡介

繼續閱讀