python psutil庫(kù)的使用示例
由于Bash實(shí)在太惡心,很多運(yùn)維工程師開(kāi)始使用Python代替Bash寫(xiě)各種腳本。
雖然理論上可以用Python調(diào)用Bash指令實(shí)現(xiàn)各種功能,但是給各種命令寫(xiě)B(tài)ash wrapper還要解析輸出實(shí)在太麻煩。所以我們還是希望用原生Python庫(kù)來(lái)實(shí)現(xiàn)各種功能。
今天我推薦一個(gè)好用的Python庫(kù)psutil
。
psutil
一個(gè)能夠跨平臺(tái)使用的庫(kù)。可以用來(lái)獲取系統(tǒng)信息(CPU、內(nèi)存、磁盤(pán)、網(wǎng)絡(luò))和進(jìn)程信息。
它可以被用來(lái)替代這些UNIX的系統(tǒng)命令:ps, top, lsof, netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime, pidof, tty, taskset, pmap
下面是一些具體例子:
>>> import psutil # 加載庫(kù)
CPU信息
CPU占用率
>>> psutil.cpu_percent(interval=5) 12.9
CPU頻率
>>> psutil.cpu_freq() scpufreq(current=2300, min=2300, max=2300)
CPU load
>>> psutil.getloadavg() (2.21044921875, 2.4814453125, 2.74609375)
內(nèi)存信息
內(nèi)存使用狀況
>>> psutil.virtual_memory() svmem(total=8589934592, available=1664913408, percent=80.6, used=5807058944, free=15069184, active=1651421184, inactive=1649065984, wired=4155637760)
磁盤(pán)
磁盤(pán)分區(qū)信息
>>> psutil.disk_partitions() [sdiskpart(device='/dev/disk1s5', mountpoint='/', fstype='apfs', opts='ro,local,rootfs,dovolfs,journaled,multilabel', maxfile=255, maxpath=1024), ...]
磁盤(pán)占用率
>>> psutil.disk_usage('/') sdiskusage(total=250685575168, used=11233398784, free=14531440640, percent=43.6)
磁盤(pán)IO
>>> psutil.disk_io_counters() sdiskio(read_count=190236826, write_count=110716593, read_bytes=11349786423296, write_bytes=9505852936192, read_time=165443373, write_time=100234117)
網(wǎng)絡(luò)
網(wǎng)絡(luò)連接 (netstat)
>>> import psutil >>> psutil.net_connections() [pconn(fd=115, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=48776), raddr=addr(ip='93.186.135.91', port=80), status='ESTABLISHED', pid=1254), pconn(fd=117, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=43761), raddr=addr(ip='72.14.234.100', port=80), status='CLOSING', pid=2987), pconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=60759), raddr=addr(ip='72.14.234.104', port=80), status='ESTABLISHED', pid=None), pconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=51314), raddr=addr(ip='72.14.234.83', port=443), status='SYN_SENT', pid=None) ...]
網(wǎng)絡(luò)接口(ifconfig)
>>> psutil.net_if_addrs() {'lo': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast='127.0.0.1', ptp=None), snicaddr(family=<AddressFamily.AF_INET6: 10>, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None), snicaddr(family=<AddressFamily.AF_LINK: 17>, address='00:00:00:00:00:00', netmask=None, broadcast='00:00:00:00:00:00', ptp=None)], 'wlan0': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='192.168.1.3', netmask='255.255.255.0', broadcast='192.168.1.255', ptp=None), snicaddr(family=<AddressFamily.AF_INET6: 10>, address='fe80::c685:8ff:fe45:641%wlan0', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None), snicaddr(family=<AddressFamily.AF_LINK: 17>, address='c4:85:08:45:06:41', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]}
其它系統(tǒng)信息
電池
>>> psutil.sensors_battery() sbattery(percent=93, secsleft=15420, power_plugged=False)
當(dāng)前用戶
>>> psutil.users() [suser(name='myname', terminal='console', host=None, started=1604809088.0, pid=180), suser(name='yuliji', terminal='ttys012', host=None, started=1615375616.0, pid=13894)]
進(jìn)程信息
PID
>>> psutil.pids() [1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, ..., 32498]
所有進(jìn)程
>>> for proc in psutil.process_iter(['pid', 'name', 'username']): ... print(proc.info) ... {'name': 'systemd', 'pid': 1, 'username': 'root'} {'name': 'kthreadd', 'pid': 2, 'username': 'root'} {'name': 'ksoftirqd/0', 'pid': 3, 'username': 'root'}
詳細(xì)文檔,請(qǐng)參考: psutil.readthedocs.io/en/latest/
以上就是python psutil庫(kù)的使用示例的詳細(xì)內(nèi)容,更多關(guān)于python psutil庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
數(shù)據(jù)驅(qū)動(dòng)測(cè)試DDT之Selenium讀取Excel文件
這篇文章主要為大家介紹了數(shù)據(jù)驅(qū)動(dòng)測(cè)試DDT之Selenium讀取Excel文件,2021-11-11用python結(jié)合jieba和wordcloud實(shí)現(xiàn)詞云效果
詞云,顧名思義就是很多個(gè)單詞,然后通過(guò)出現(xiàn)的頻率或者比重之類(lèi)的標(biāo)準(zhǔn)匯聚成一個(gè)云朵的樣子嘛,其實(shí)呢現(xiàn)在網(wǎng)上已經(jīng)有很多能自動(dòng)生成詞云的工具了,比如Wordle,Tagxedo等等,Python也能實(shí)現(xiàn)這樣的效果,我們通過(guò)jieba庫(kù)和wordcloud庫(kù)也能十分輕松的完成詞云的構(gòu)建2017-09-09關(guān)于python pygame游戲進(jìn)行聲音添加的技巧
這篇文章主要給大家分享的是pygame游戲進(jìn)行聲音添加的方法,這文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!2021-10-10Django開(kāi)發(fā)中使用Ueditor上傳圖片遇到的坑及解決
在Django開(kāi)發(fā)中使用Ueditor上傳圖片時(shí),可能會(huì)遇到后端配置不正確的問(wèn)題,建議在實(shí)例化Ueditor后加上serverUrl,這可以在Chrome的F12工具中查看請(qǐng)求的后端配置項(xiàng),此外,如果需要修改上傳路徑,可以在配置文件中更改路徑,并調(diào)整view.py中的代碼來(lái)管理上傳文件2024-09-09Pytorch框架實(shí)現(xiàn)mnist手寫(xiě)庫(kù)識(shí)別(與tensorflow對(duì)比)
這篇文章主要介紹了Pytorch框架實(shí)現(xiàn)mnist手寫(xiě)庫(kù)識(shí)別(與tensorflow對(duì)比),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Python學(xué)習(xí)Turtle庫(kù)畫(huà)對(duì)稱(chēng)勾股樹(shù)體會(huì)分形驚艷
這篇文章主要為大家介紹了Python學(xué)習(xí)中如何使用Turtle庫(kù)畫(huà)對(duì)稱(chēng)勾股樹(shù),從而體會(huì)到分形世界的驚艷,文中附含詳細(xì)示例代碼有需要的朋友可以借鑒參考下2021-09-09Django網(wǎng)絡(luò)框架之創(chuàng)建虛擬開(kāi)發(fā)環(huán)境操作示例
這篇文章主要介紹了Django網(wǎng)絡(luò)框架之創(chuàng)建虛擬開(kāi)發(fā)環(huán)境操作,簡(jiǎn)單描述了虛擬開(kāi)發(fā)環(huán)境的概念、功能,并分析了使用venv與virtualenv安裝虛擬環(huán)境相關(guān)操作技巧,需要的朋友可以參考下2019-06-06python實(shí)現(xiàn)括號(hào)匹配的思路詳解
這篇文章主要介紹了python實(shí)現(xiàn)括號(hào)匹配及匹配格式的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08使用Python編寫(xiě)一個(gè)簡(jiǎn)單的tic-tac-toe游戲的教程
這篇文章主要介紹了使用Python編寫(xiě)一個(gè)簡(jiǎn)單的tic-tac-toe游戲的教程,有利于Python初學(xué)者進(jìn)行上手實(shí)踐,需要的朋友可以參考下2015-04-04