1.python系統性能信息模塊之psutil模塊

 

Psutil(進程和系統實用程序)是一個跨平臺的庫,用於在Python中檢索有關運行進程和系統資源利用率(CPU,內存,磁盤,網絡)的信息。它主要用於系統監視,分析和限制系統資源及運行進程的管理。它實現了Linux命令工具提供的許多功能,例如:ps,top,lsof,netstat,ifconfig,who,df,kill,nice,ionice,iostat,iotop,uptime,pidos,tty,tasket,pmap等。psutil目前支持如下平臺:linux、Windows、OSX、FreeBSD,OpenBSD、NETBSD、sun Solaris、AIX操做系統。因此是python實現系統運維不可或缺的模塊。python

官方下載地址:https://pypi.org/linux

psutil模塊安裝:https://github.com/giampaolo/psutilios

我這裏使用windows10系統,pip install psutil安裝git

具體使用:github

一.系統管理windows

1.查看cpu信息緩存

psutil.cpu_times()

參數介紹:網絡

  • user:用戶進程使用的CPU時間累計
  • nice:優先級爲負值的進程使用時間
  • system:內核進程使用時間累計
  • idle:CPU空閒時間累計
  • iowait:等待IO花費的時間
  • irq:硬中斷時間累計
  • softirq:軟中斷時間累計
  • steal:花費在虛擬機中的時間

2.顯示cpu全部邏輯信息運維

psutil.cpu_times(percpu=True)

3.查看用戶的cpu時間比socket

psutil.cpu_times().user

4.查看cpu邏輯個數

psutil.cpu_count()

5.查看cpu物理個數

psutil.cpu_count(logical=False)

-----------------------------------------------

6.查看系統內存

mem = psutil.virtual_memory() //系統內存全部信息
mem.total //系統總計內存
mem.used //系統已經使用內存
mem.free //系統空閒內存
mem.active //系統正在使用的內存和最近使用內存
mem.inactive //系統已經分配的內存,但尚未使用的
mem.shared //系統共享的內存
mem.buffers //系統緩衝區內存
mem.cached //系統cpu緩存空間,存放常用的數據

7.獲取swap交換內存信息

psutil.swap_memory()

----------------------------------------------

8.讀取磁盤參數

磁盤IO信息包括

read_count(讀IO數),

write_count(寫IO數)

read_bytes(IO寫字節數),

read_time(磁盤讀時間),

write_time(磁盤寫時間)

9.獲取分區信息

psutil.disk_partitions()

10.獲取指定分區的信息

psutil.disk_usage('/')   #獲取/分區的狀態

11.獲取磁盤總的IO詳情

psutil.disk_io_counters()

12.獲取單個分區IO個數

psutil.disk_io_counters(perdisk=True)    #perdisk=True參數獲取單個分區IO個數

13.讀取網絡信息

網絡信息與磁盤IO信息相似,涉及到幾個關鍵點,包括

byes_sent(發送字節數),

byte_recv=xxx(接受字節數),

pack-ets_sent=xxx(發送字節數),

pack-ets_recv=xxx(接收數據包數),這些網絡信息用

獲取網絡總IO信息

psutil.net_io_counters()  

14.輸出網絡每一個接口信息

psutil.net_io_counters(pernic=True)     #pernic=True

15.獲取當前系統用戶登錄信息

psutil.users()

16.獲取系統開機時間

psutil.boot_time()  #以linux時間格式返回

17.將獲取到的時間轉換成可視時間

import datetime
datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H: %M: %S")

二.系統進程管理

列出全部的進程信息:

>>> res = psutil.process_iter() >>> for i in res: ... print(i)

1.列出系統全部進程的ID

psutil.pids()

2.獲取某一進程的信息,參數爲pid

psutil.Process(pid)

3.獲取指定進程的名稱

psutil.Process(pid).name()

4.獲取指定進程的執行命令的路徑

psutil.Process(pid).exe()

5.獲取指定進程的工做路徑的絕對路徑

psutil.Process(pid).cwd() 

6.獲取進程的狀態

psutil.Process(pid).status()

7.進程建立時間

psutil.Process(pid).create_time()

8.以可視的方式顯示建立進程的時間

datetime.datetime.fromtimestamp(psutil.Process(pid).create_time()).strftime("%Y-%m-%d %H: %M: %S")

9.獲取指定進程的uid信息

psutil.Process(pid).uids()

10.獲取指定進程的gid信息

psutil.Process(pid).gids()

11.獲取指定進程的cpu時間信息,包括user,system

psutil.Process(pid).cpu_times()

12.獲取進程cpu的親和度

psutil.Process(pid).cpu_affinity()

13.進程內存的利用率

psutil.Process(pid).memory_percent()

14.進程內存的rss和vms的值

psutil.Process(pid).memory_info()

15.指定進程的IO數,包括讀寫IO數及字節數

psutil.Process(pid).io_counters()

16.返回打開進程的socket的namedutples列表,包括(fs,family,laddr)等信息

psutil.Process(pid).connections()

17.指定進程開啓的線程數

psutil.Process(pid).num_threads()

-------------------------------------------------------

18.popen類的使用

from subprocess import PIPE P = psutil.Popen(["/usr/bin/python","-c","print('hello')"],stdout=PIPE)  執行系統中的命令,非交互,而且輸出。

>>> P.name()

'python'

>>> P.username()

'root'

>>> P.communicate()
('hello\n', None)
相關文章
相關標籤/搜索