Python-Psutil系統(tǒng)監(jiān)控

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


'''

詳細(xì)文件移步Python學(xué)習(xí)筆記

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晒衩,一起剝皮案震驚了整個(gè)濱河市嗤瞎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌听系,老刑警劉巖贝奇,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異靠胜,居然都是意外死亡掉瞳,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門浪漠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來陕习,“玉大人,你說我怎么就攤上這事址愿「昧停” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵响谓,是天一觀的道長损合。 經(jīng)常有香客問我,道長歌粥,這世上最難降的妖魔是什么塌忽? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任拍埠,我火速辦了婚禮失驶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘枣购。我一直安慰自己嬉探,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布棉圈。 她就那樣靜靜地躺著涩堤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪分瘾。 梳的紋絲不亂的頭發(fā)上胎围,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼白魂。 笑死汽纤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的福荸。 我是一名探鬼主播蕴坪,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼敬锐!你這毒婦竟也來了背传?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤台夺,失蹤者是張志新(化名)和其女友劉穎径玖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颤介,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挺狰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了买窟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丰泊。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖始绍,靈堂內(nèi)的尸體忽然破棺而出瞳购,到底是詐尸還是另有隱情,我是刑警寧澤亏推,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布学赛,位于F島的核電站,受9級(jí)特大地震影響吞杭,放射性物質(zhì)發(fā)生泄漏盏浇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一芽狗、第九天 我趴在偏房一處隱蔽的房頂上張望绢掰。 院中可真熱鬧,春花似錦童擎、人聲如沸滴劲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽班挖。三九已至,卻和暖如春芯砸,著一層夾襖步出監(jiān)牢的瞬間萧芙,已是汗流浹背给梅。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留双揪,地道東北人破喻。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像盟榴,于是被迫代替她去往敵國和親曹质。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 〇擎场、前言 本文共108張圖羽德,流量黨請(qǐng)慎重! 歷時(shí)1個(gè)半月迅办,我把自己學(xué)習(xí)Python基礎(chǔ)知識(shí)的框架詳細(xì)梳理了一遍宅静。 ...
    Raxxie閱讀 18,931評(píng)論 17 410
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,769評(píng)論 25 707
  • 尊敬老師、家長朋友們大家好站欺! 我是2013屆九班蔡智臻的家長姨夹,首先感謝蔡老師的邀請(qǐng),讓我很榮幸的能來參加你們的家...
    蔡老師YNWA閱讀 821評(píng)論 0 0
  • 送你一個(gè)杯子 表達(dá)我的情癡 上面刻有愛的詩 情的詞 這是我愛意的禮 它并不奢侈 只是代表我對(duì)你的相思 讓你心情得到...
    筋工元素閱讀 343評(píng)論 2 5
  • 這世間矾策,只有父母對(duì)孩子的愛是最無私的 無論是指點(diǎn)江山磷账,揮斥方遒的達(dá)官貴人,還是默默勞作贾虽,面朝黃土背朝天的布衣平民 ...
    七玥LING閱讀 228評(píng)論 0 0