基于python調(diào)用psutil模塊過程解析
這篇文章主要介紹了基于python調(diào)用psutils模塊過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
用Python來編寫腳本簡化日常的運維工作是Python的一個重要用途。在Linux下,有許多系統(tǒng)命令可以讓我們時刻監(jiān)控系統(tǒng)運行的狀態(tài),如ps,top,free等等。要獲取這些系統(tǒng)信息,Python可以通過subprocess模塊調(diào)用并獲取結(jié)果。但這樣做顯得很麻煩,尤其是要寫很多解析代碼。
在Python中獲取系統(tǒng)信息的另一個好辦法是使用psutil這個第三方模塊。顧名思義,psutil = process and system utilities,它不僅可以通過一兩行代碼實現(xiàn)系統(tǒng)監(jiān)控,還可以跨平臺使用,支持Linux/UNIX/OSX/Windows等,是系統(tǒng)管理員和運維小伙伴不可或缺的必備模塊。
代碼如下
oshelper.py
#encoding=utf-8
import psutil
import datetime
#查看cpu的信息
print u"CPU 個數(shù) %s"%psutil.cpu_count()
print u"物理CPU個數(shù) %s"%psutil.cpu_count(logical=False)
print u"CPU uptimes"
print psutil.cpu_times()
print ""
#查看內(nèi)存信息
mem = psutil.virtual_memory()
print u"系統(tǒng)總內(nèi)存 %s G"%(mem.total/1024/1024/1024)
print u"系統(tǒng)可用內(nèi)存 %s G"%(mem.available/1024/1024/1024)
mem_rate = int(mem.available)/float(mem.total)
print u"系統(tǒng)內(nèi)存使用率 %s %%"%int(mem_rate*100)
#交換分區(qū)
swapmem = psutil.swap_memory()
print u"交換分區(qū) %s G"%(swapmem.total/1024/1024/1024)
print u"交換分區(qū)可用 %s G"%(swapmem.free/1024/1024/1024)
print u"交換分區(qū)使用率 %s %%"%int(swapmem.percent)
#系統(tǒng)啟動時間
print u"系統(tǒng)啟動時間 %s"%datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")
#系統(tǒng)用戶
users_count = len(psutil.users())
users_list = ",".join([ u.name for u in psutil.users()])
print u"當前有%s個用戶,分別是%s"%(users_count, users_list)
#網(wǎng)卡,可以得到網(wǎng)卡屬性,連接數(shù),當前流量等信息
net = psutil.net_io_counters()
bytes_sent = '{0:.2f} Mb'.format(net.bytes_recv / 1024 / 1024)
bytes_rcvd = '{0:.2f} Mb'.format(net.bytes_sent / 1024 / 1024)
print u"網(wǎng)卡接收流量 %s 網(wǎng)卡發(fā)送流量 %s"%(bytes_rcvd, bytes_sent)
nis=psutil.net_io_counters(pernic=True)
print u"網(wǎng)卡 " ,tuple(nis)
#進程 進程的各種詳細參數(shù)
def show_process(pid):
try:
p = psutil.Process(pid)
p.name() #進程名
#p.exe() #進程的bin路徑
#p.cwd() #進程的工作目錄絕對路徑
p.status() #進程狀態(tài)
p.create_time() #進程創(chuàng)建時間
#p.uids() #進程uid信息
#p.gids() #進程的gid信息
p.cpu_times() #進程的cpu時間信息,包括user,system兩個cpu信息
#p.cpu_affinity() #get進程cpu親和度,如果要設置cpu親和度,將cpu號作為參考就好
p.memory_percent() #進程內(nèi)存利用率
p.memory_info() #進程內(nèi)存rss,vms信息
p.io_counters() #進程的IO信息,包括讀寫IO數(shù)字及參數(shù)
#p.connectios() #返回進程列表
p.num_threads() #進程開啟的線程數(shù)
'''
聽過psutil的Popen方法啟動應用程序,可以跟蹤程序的相關(guān)信息
from subprocess import PIPE
p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"],stdout=PIPE)
'''
p.name()
#p.username()
except:
pass
'''
pids=psutil.pids()
for pid in pids:
show_process(pid)
'''
with open (r'd:\temp\test.txt','w') as f:
sys.stdout=f
for proc in psutil.process_iter():
'''
if proc.name() == "w3wp.exe":
cpu_threshold=proc.cpu_percent(interval=2)/24
print proc.name(),proc.create_time(),cpu_threshold
p.terminate() proc .kill()
Iterate over all ports this process is listening to
for con in proc.get_connections():
con
'''
pa=proc.as_dict()
print pa.get('name'),pa.get('create_time'),pa.get('pid'),pa.get('status'),pa.get('connections'),pa.get('open_files'),pa.get('cpu_percent'),pa.get('memory_percent'),pa.get('username'),pa.get('num_threads')
print u"當前進程:",psutil.Process(os.getpid()).cmdline()
#磁盤 磁盤的使用量等等
dps=psutil.disk_partitions()
for dp in dps:
dp
du=psutil.disk_usage('/')
print u"硬盤總共容量 %s G"%(du.total/1024/1024/1024)
print u"硬盤可用 %s G"%(du.free/1024/1024/1024)
print u"硬盤已用 %s %%"%(du.percent)
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python利用pyreadline模塊實現(xiàn)交互式命令行開發(fā)
交互式命令行是一種方便用戶進行交互的工具,能夠使用戶與計算機進行快速的交互操作,提高工作效率。本文主要介紹了如何利用pyreadline模塊實現(xiàn)交互式命令行開發(fā),需要的可以參考一下2023-05-05
Python利用pdfplumber庫提取pdf中表格數(shù)據(jù)
pdfplumber是一個用于從PDF文檔中提取文本和表格數(shù)據(jù)的Python庫,它可以幫助用戶輕松地從PDF文件中提取有用的信息,例如表格、文本、元數(shù)據(jù)等,本文介紹了如何通過Python的pdfplumber庫提取pdf中表格數(shù)據(jù),感興趣的同學可以參考一下2023-05-05
PyCharm GUI界面開發(fā)和exe文件生成的實現(xiàn)
這篇文章主要介紹了PyCharm GUI界面開發(fā)和exe文件生成,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03
自適應線性神經(jīng)網(wǎng)絡Adaline的python實現(xiàn)詳解
這篇文章主要介紹了自適應線性神經(jīng)網(wǎng)絡Adaline的python實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-09-09
Python內(nèi)置函數(shù)—vars的具體使用方法
本篇文章主要介紹了Python內(nèi)置函數(shù)—vars的具體使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12

