import psutil
import re
propertyList = dir(psutil)
pList = []
fList = []
for x in propertyList:
if(re.match(r'[a-zA-Z]{1,100}$',x)):
pList.append(x)
else:
fList.append(x)
print('pasutil屬性:',pList)
print('pasutil方法:',fList)
''' ['AIX', 'AccessDenied', 'BSD', 'Error', 'FREEBSD', 'LINUX', 'NETBSD',
'NoSuchProcess', 'OPENBSD', 'OSX', 'POSIX', 'Popen', 'Process', 'SUNOS',
'TimeoutExpired', 'WINDOWS', 'ZombieProcess', 'collections', 'contextlib',
'datetime', 'errno', 'functools', 'long', 'os', 'pids', 'pwd', 'signal',
'subprocess', 'sys', 'test', 'time', 'traceback', 'users']
'''
'''
在Python中獲取系統(tǒng)信息 psutil
1.獲取CPU信息
'''
cpuCount = psutil.cpu_count()#cpu 邏輯數(shù)量
print('cpu 邏輯數(shù)量:',cpuCount)
cpulogical = psutil.cpu_count(logical=False)#CPU物理核心
print('CPU物理核心:',cpulogical) # 2說明是雙核超線程, 4則是4核非超線程
'''
2.統(tǒng)計(jì)CPU的用戶/系統(tǒng)/空閑時(shí)間:
'''
cpuTimes = psutil.cpu_times()
print('CPU的用戶/系統(tǒng)/空閑時(shí)間:',cpuTimes)
# 再實(shí)現(xiàn)類似top命令的CPU使用率戚绕,每秒刷新一次,累計(jì)10次:
# for x in range(10):
# CPUUser = psutil.cpu_percent(interval = 1,percpu = True)
# print('CPU使用率每秒刷新一次:',CPUUser)
'''
3.獲取內(nèi)存信息
'''
cpuMemory = psutil.virtual_memory()
cpuSwap = psutil.swap_memory()
print('cpuMemory內(nèi)存信息:',cpuMemory)
print('cpu交換區(qū)信息:',cpuSwap)
'''
cpuMemory內(nèi)存信息:
svmem(total=8589934592, #總內(nèi)存大小是8589934592 = 8 GB
available=2579615744,
percent=70.0, #使用了70%
used=7015297024, #已用7015297024 = 7 GB
free=31858688,
active=2672586752,
inactive=2547757056,
wired=1794953216)
cpu交換區(qū)信息:
sswap(total=1073741824, #而交換區(qū)大小是1073741824 = 1 GB蟹腾。
used=0,
free=1073741824,
percent=0.0,
sin=11635412992,
sout=87379968)
'''
'''
4.獲取磁盤信息
可以通過psutil獲取磁盤分區(qū)挽霉、磁盤使用率和磁盤IO信息:
'''
cpuPart = psutil.disk_partitions()#磁盤分區(qū)信息
cpuUseage = psutil.disk_usage('/')#磁盤使用情況
cpuCounters = psutil.disk_io_counters() #磁盤IO
print('cpu磁盤分區(qū)信息:',cpuPart)
print('cpu磁盤使用情況:',cpuUseage)
print('cpu磁盤IO:',cpuCounters)
'''
# cpu磁盤分區(qū)信息:
[sdiskpart(device='/dev/disk0s2',
mountpoint='/',
fstype='hfs', #文件格式是HFS
opts='rw,local, #表示可讀寫
rootfs,dovolfs,
journaled,#表示支持日志
multilabel')]
# cpu磁盤使用情況:
sdiskusage(total=999345127424, #總?cè)萘渴?99345127424 = 930 GB
used=256843866112,
free=742239117312,
percent=25.7)#使用了25.7%
# cpu磁盤IO:
sdiskio(read_count=365015,
write_count=344144,
read_bytes=11479504384,
write_bytes=6250120704,
read_time=4374786,
write_time=2834698)
'''
'''
5.獲取網(wǎng)絡(luò)信息
psutil可以獲取網(wǎng)絡(luò)接口和網(wǎng)絡(luò)連接信息:
'''
netCounters = psutil.net_io_counters() #獲取網(wǎng)絡(luò)讀寫字節(jié)/包的個(gè)數(shù)
print('獲取網(wǎng)絡(luò)讀寫字節(jié)/包的個(gè)數(shù):',netCounters)
netAddress = psutil.net_if_addrs()#獲取網(wǎng)絡(luò)接口信息
# print('獲取網(wǎng)絡(luò)接口信息',netAddress)
netstatus = psutil.net_if_stats()#獲取網(wǎng)絡(luò)接口狀態(tài)
# print('獲取網(wǎng)絡(luò)接口狀態(tài):',netstatus)
'''
# 獲取網(wǎng)絡(luò)讀寫字節(jié)/包的個(gè)數(shù):
snetio(bytes_sent=366861312,
bytes_recv=540371968,
packets_sent=973691,
packets_recv=976662,
errin=0,
errout=0,
dropin=0,
ropout=0)
# 獲取網(wǎng)絡(luò)接口信息 很長省略...
{
'lo0': [snic(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0'), ...],
'en1': [snic(family=<AddressFamily.AF_INET: 2>, address='10.0.1.80', netmask='255.255.255.0'), ...],
'en0': [...],
'en2': [...],
'bridge0': [...]
}
# 獲取網(wǎng)絡(luò)接口狀態(tài):很長省略...
{
'lo0': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=16384),
'en0': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=1500),
'en1': snicstats(...),
'en2': snicstats(...),
'bridge0': snicstats(...)
}
'''
'''
6.要獲取當(dāng)前網(wǎng)絡(luò)連接信息,使用net_connections():
#warn 需要root權(quán)限
sudo python ***.py
'''
netConnection = psutil.net_connections()
# print('獲取當(dāng)前網(wǎng)絡(luò)連接信息:',netConnection)#warn 需要root權(quán)限
# 你可能會(huì)得到一個(gè)AccessDenied錯(cuò)誤,原因是psutil獲取信息也是要走系統(tǒng)接口,而獲取網(wǎng)絡(luò)連接信息需要root權(quán)限,這種情況下株憾,可以退出Python交互環(huán)境,用sudo重新啟動(dòng):
'''
7.獲取進(jìn)程信息
通過psutil可以獲取到所有進(jìn)程的詳細(xì)信息:
'''
netPids = psutil.pids()
# print('所有進(jìn)程的詳細(xì)信息:',netPids)
netProcess = psutil.Process(netPids[1]) # 獲取指定進(jìn)程 iD=3776其實(shí)就是當(dāng)前 python 交互環(huán)境
# print('獲取指定進(jìn)程:',netProcess)
netName = netProcess.name()#進(jìn)程名稱
print('進(jìn)程名稱:',netName)
netpath = netProcess.exe()#進(jìn)程exe路徑
print('進(jìn)程exe路徑',netpath)
netcwd = netProcess.cwd() # 進(jìn)程工作目錄
print('進(jìn)程工作目錄:',netcwd)
netline = netProcess.cmdline()# 進(jìn)程啟動(dòng)的命令行
print(' 進(jìn)程啟動(dòng)的命令行:',netline)
netFa = netProcess.ppid()# 父進(jìn)程ID
print('父進(jìn)程ID:',netFa)
netparent = netProcess.parent()#父進(jìn)程
print('父進(jìn)程:',netparent)
netparentChildren = netProcess.children()#子進(jìn)程列表
print('子進(jìn)程列表:',netparentChildren)
netstatus = netProcess.status()#進(jìn)程狀態(tài)
print('進(jìn)程狀態(tài):',netstatus)
netName = netProcess.username() # 進(jìn)程用戶名
print('進(jìn)程用戶名:',netName)
netcreateTime = netProcess.create_time() # 進(jìn)程創(chuàng)建時(shí)間
print('進(jìn)程創(chuàng)建時(shí)間:',netcreateTime)
netterminal = netProcess.terminal() # 進(jìn)程終端
print('進(jìn)程終端:',netterminal)
nettimes = netProcess.cpu_times()# 進(jìn)程使用的CPU時(shí)間
print('進(jìn)程使用的CPU時(shí)間:',nettimes)
netMemoryInfo = netProcess.memory_info()# 進(jìn)程使用的內(nèi)存
print('進(jìn)程使用的內(nèi)存:',netMemoryInfo)
netOpenFiles = netProcess.open_files()# 進(jìn)程打開的文件
print('進(jìn)程打開的文件:',netOpenFiles)
netConnc = netProcess.connections()# 進(jìn)程相關(guān)網(wǎng)絡(luò)連接
print('進(jìn)程相關(guān)網(wǎng)絡(luò)連接:',netConnc)
netthreads = netProcess.num_threads() # 進(jìn)程的線程數(shù)量
print('進(jìn)程的線程數(shù)量:',netthreads)
'''
通過psutil可以獲取到所有進(jìn)程的詳細(xì)信息:
[3865, 3864, 3863, 3856, 3855, 3853, 3776, ..., 45, 44, 1, 0]
獲取指定進(jìn)程
pid=3221, name='sudo', started='18:07:19'
進(jìn)程名稱: sudo
進(jìn)程exe路徑 /usr/bin/sudo
進(jìn)程工作目錄: /Users/djnet/Desktop
進(jìn)程啟動(dòng)的命令行: ['sudo', 'python3.7', 'pic.py']
父進(jìn)程ID: 1158
父進(jìn)程: psutil.Process(pid=1158, name='zsh', started='10:15:29')
子進(jìn)程列表: [psutil.Process(pid=3333, name='Python', started='18:16:54')]
進(jìn)程狀態(tài): running
進(jìn)程用戶名: root
進(jìn)程創(chuàng)建時(shí)間: 1530785984.024908
進(jìn)程終端: /dev/ttys000
進(jìn)程使用的CPU時(shí)間: pcputimes(user=0.014507413, system=0.009406903, children_user=0.0, children_system=0.0)
進(jìn)程使用的內(nèi)存: pmem(rss=5378048, vms=4399153152, pfaults=1612, pageins=0)
進(jìn)程打開的文件: [popenfile(path='/private/etc/security/audit_event', fd=5), popenfile(path='/private/etc/security/audit_class', fd=6)]
進(jìn)程相關(guān)網(wǎng)絡(luò)連接: []
進(jìn)程的線程數(shù)量: 1
'''
Python-Psutil系統(tǒng)監(jiān)控
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門浪漠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來陕习,“玉大人,你說我怎么就攤上這事址愿「昧停” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵响谓,是天一觀的道長损合。 經(jīng)常有香客問我,道長歌粥,這世上最難降的妖魔是什么塌忽? 我笑而不...
- 正文 為了忘掉前任拍埠,我火速辦了婚禮失驶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘枣购。我一直安慰自己嬉探,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布棉圈。 她就那樣靜靜地躺著涩堤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪分瘾。 梳的紋絲不亂的頭發(fā)上胎围,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼敬锐!你這毒婦竟也來了背传?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬榮一對(duì)情侶失蹤台夺,失蹤者是張志新(化名)和其女友劉穎径玖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颤介,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡挺狰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了买窟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丰泊。...
- 正文 年R本政府宣布学赛,位于F島的核電站,受9級(jí)特大地震影響吞杭,放射性物質(zhì)發(fā)生泄漏盏浇。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一芽狗、第九天 我趴在偏房一處隱蔽的房頂上張望绢掰。 院中可真熱鬧,春花似錦童擎、人聲如沸滴劲。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽班挖。三九已至,卻和暖如春芯砸,著一層夾襖步出監(jiān)牢的瞬間萧芙,已是汗流浹背给梅。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長得像盟榴,于是被迫代替她去往敵國和親曹质。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 〇擎场、前言 本文共108張圖羽德,流量黨請(qǐng)慎重! 歷時(shí)1個(gè)半月迅办,我把自己學(xué)習(xí)Python基礎(chǔ)知識(shí)的框架詳細(xì)梳理了一遍宅静。 ...
- Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
- 尊敬老師、家長朋友們大家好站欺! 我是2013屆九班蔡智臻的家長姨夹,首先感謝蔡老師的邀請(qǐng),讓我很榮幸的能來參加你們的家...
- 這世間矾策,只有父母對(duì)孩子的愛是最無私的 無論是指點(diǎn)江山磷账,揮斥方遒的達(dá)官貴人,還是默默勞作贾虽,面朝黃土背朝天的布衣平民 ...