系統性能信息模塊psutil
psutil是一個跨平台庫,能夠輕松實現獲取系統運行的進程和系統利用率(CPU,內存,磁盤,網絡等)信息,主要應用於系統監控,分析和限制系統資源及進程的管理,它實現了同等命令行工具提供的功能,如ps,top,lsof,netstat,ifconfig,who,df,kill,free,nice等.支持32位,和64位的Linux,Windows,OS X,FreeBSD等操作系統。
#CentOS6.4安裝psutil #pip安裝 #pip3 install psutil
獲取系統性能信息
1 cpu信息
#Linux系統cpu利用率有以下幾個部分
#User Time,執行用戶進程的時間百分比
#System Time,執行內核進程和中斷的時間百分比
#Wait IO,由於IO等待使cpu處於idle(空閑)狀態的時間百分比
#Idle,cpu處於空閑狀態的時間百分比
>>> import psutil
#獲取cpu完成信息
>>> psutil.cpu_times()
scputimes(user=29.36, nice=0.0, system=26.59, idle=9619.35, iowait=64.78, irq=0.5, softirq=1.67, steal=0.0, guest=0.0)
#獲取用戶user的cpu時間比
>>> psutil.cpu_times().user
34.54
#獲取cpu邏輯個數
>>> psutil.cpu_count()
4
#獲取cpu物理個數
>>> psutil.cpu_count(logical=False)
4
2 內存信息
#Linux系統的內存利用率信息涉及
#total 內存總數
#used 已使用的內存數
#free 空閑內存數
#buffers 緩沖使用數
#cache 緩存使用數
#swap 交換分區使用數 等
#使用 psutil.virtual_memory()與psutil.memory()方法獲取
#獲取內存完整信息
>>>mem = psutil.virtual_memory()
>>> mem
svmem(total=1961488384, available=1483986944, percent=24.3, used=341475328, free=941473792, active=677801984, inactive=212774912, buffers=32038912, cached=646500352, shared=4116480)
#獲取內存總數
>>> mem.total
1961488384
#獲取空閑內存數
>>> mem.free
941473792
#獲取SWAP分區信息
>>> psutil.swap_memory()
sswap(total=2147475456, used=0, free=2147475456, percent=0.0, sin=0, sout=0)
3 磁盤信息
#磁盤利用率使用psutil.disk_usage()方法獲取
#IO信息
#read_count 讀IO數
#write_count 寫IO數
#read_bytes IO讀字節數
#write_bytes IO寫字節數
#read_time 磁盤讀時間
#write_time 磁盤寫時間
#使用psutil.disk_io_counters()獲取
#獲取磁盤完整信息
>>> psutil.disk_partitions()
[sdiskpart(device='/dev/sda3', mountpoint='/', fstype='ext4', opts='rw'), sdiskpart(device='/dev/sda1', mountpoint='/boot', fstype='ext4', opts='rw')]
#獲取/分區使用情況
>>> psutil.disk_usage('/')
sdiskusage(total=18506760192, used=4438568960, free=13128093696, percent=25.3)
#獲取硬盤總IO數
>>> psutil.disk_io_counters()
4 網絡信息
#bytes_sent 發送字節數
#bytes_recv 接收字節數
#packets_sent 發送數據包數
#packest_recv 接收數據包數
#使用psutil.net_io_counters()獲取
>>> psutil.net_io_counters()
5 其他系統信息
#psutil模塊還支持獲取用戶登錄,開機時間等信息
#顯示當前登錄系統的用戶信息
>>> psutil.users()
#獲取開機時間
>>> psutil.boot_time()
系統進程管理方法
psutil在獲取進程信息方面也提供了很好的支持,包括使用psutil.pids()方法獲取所有PID,使用psutil.Process()方法獲取單個進程的名稱,路徑,系統資源利用率等信息。
#列出所有進程的PID >>> psutil.pids() #實例化一個Process對象,參數為一個PID >>>p = psutil.Process(3197) #進程名 >>> p.name() 'python3' #進程bin路徑 >>> p.exe() '/opt/python3/bin/python3.5' #進程工作絕對路徑 >>> p.cwd() #進程狀態 >>> p.status() #進程創建時間 >>> p.create_time() #uid信息 >>> p.uids() #gid信息 >>> p.gids() #進程cpu時間,包括user,system兩個時間 >>> p.cpu_times() #進程內存利用率 >>> p.memory_percent() #進程內存rss,vms信息 >>> p.memory_info() #進程IO信息 >>> p.io_counters() #進程開啟的線程數 >>> p.num_threads()
