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實現系統運維不可或缺的模塊。
官方下載地址:https://pypi.org/
psutil模塊安裝:https://github.com/giampaolo/psutil
我這裏使用windows10系統,pip install psutil安裝
具體使用:
一.系統管理
1.查看cpu信息
psutil.cpu_times()
2.顯示cpu所有邏輯信息
psutil.cpu_times(percpu=True)
3.查看用戶的cpu時間比
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 //系統空閑內存
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")
二.系統進程管理
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)
1.python系統性能信息模塊之psutil模塊