1. 程式人生 > >psutil模塊基礎學習

psutil模塊基礎學習

psutil

平時的運維中,我需要查看cpu的使用率,還有邏輯個數,物理個數,還有內存,磁盤,進程等,這裏我使用psutil模塊來做一個信息查看的學習

1-CPU相關的

cpu使用率:

>>> psutil.cpu_percent()

0.8

當前使用率是0.8%,這個0.8是用戶空間使用cpu時間比加上系統內核空間使用cpu時間比還有其他的硬中斷軟中斷等

查看cpu詳細使用情況:

>>> psutil.cpu_times_percent()

scputimes(user=0.1, nice=0.0, system=0.4, idle=99.5, iowait=0.0, irq=0.0, softirq=0.0, steal=0.0, guest=0.0, guest_nice=0.0)

>>> psutil.cpu_times_percent().user #單獨查看用戶空間cpu使用時間比

0.2

>>> psutil.cpu_times_percent().system #單獨查看內核空間cpu使用時間比

0.6

>>>

cpu邏輯個數(核數):

>>> psutil.cpu_count()

1

cpu物理個數:

>>> psutil.cpu_count(logical=False)

1

當然cpu還有很多信息可以讓我們利於觀察系統資源使用情況,我這裏就看著三個就夠了.

2-內存相關的

查看內存信息:

>>> psutil.virtual_memory()

svmem(total=1025363968, available=702746624, percent=31.5, used=162177024, free=140103680, active=375029760, inactive=331767808, buffers=1777664, cached=721305600, shared=6959104)

查看物理內存總量信息:

>>> psutil.virtual_memory().used

162177024

>>> psutil.virtual_memory().total

1025363968

查看用戶使用內存信息:

>>> psutil.virtual_memory().used

162177024

查看空閑內存信息:

>>> psutil.virtual_memory().free

140103680

查看交換分區信息(虛擬內存):

>>> psutil.swap_memory()

sswap(total=2147479552, used=40960, free=2147438592, percent=0.0, sin=0, sout=40960)

例子1:

>>> print("""當前系統內存為%sM,用戶使用為%sM,空閑為%sM""" %(int(psutil.virtual_memory().total/1024/1024),int(psutil.virtual_memory().used/1024/1024),int(psutil.virtual_memory().free/1024/1024)))

當前系統內存為977M,用戶使用為153M,空閑為134M

3-磁盤相關的

查看磁盤分區情況:

>>> psutil.disk_partitions()

[sdiskpart(device=‘/dev/mapper/centos-root‘, mountpoint=‘/‘, fstype=‘xfs‘, opts=‘rw,seclabel,relatime,attr2,inode64,noquota‘), sdiskpart(device=‘/dev/sda1‘, mountpoint=‘/boot‘, fstype=‘xfs‘, opts=‘rw,seclabel,relatime,attr2,inode64,noquota‘)]

這裏註意,結果是以列表的形式顯示了當前系統磁盤分區的,每一個分區為一個列表元素

查看分區使用情況:

>>> psutil.disk_usage(‘/‘)

sdiskusage(total=18746441728, used=1604726784, free=17141714944, percent=8.6)

>>> print("當前系統磁盤為%sG" % int(psutil.disk_usage(‘/‘).total/1024/1024/1024))

當前系統磁盤為17G

>>> print("當前磁盤使用率為%.2f%%" % psutil.disk_usage(‘/‘).percent)

當前磁盤使用率為8.60%

註意:輸出%要註意格式

4-其他相關的

系統啟動時間:

當前系統登錄用戶:

>>> psutil.users()

[suser(name=‘root‘, terminal=‘pts/0‘, host=‘root‘, started=1510173184.0, pid=34890), suser(name=‘root‘, terminal=‘pts/1‘, host=‘root‘, started=1510174976.0, pid=35059), suser(name=‘root‘, terminal=‘pts/2‘, host=‘root‘, started=1510164736.0, pid=34432), suser(name=‘root‘, terminal=‘pts/3‘, host=‘root‘, started=1510174976.0, pid=35078)]

這裏顯示的當前有四個用戶登錄到系統

查看進程PID:

>>> psutil.pids()

[1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 9..............35102, 35103]

所有的pid都會顯示在列表中,通過這些pid,我們還可以查看進程的名稱,進程的用戶等

>>> psutil.Process(1).name() #查看進程名稱

‘systemd‘

註意,這裏的Process是P大寫字母

>>> psutil.Process(1).username() #查看進程用戶名

‘root‘

註意,這裏的Process是P大寫字母

>>> psutil.Process(1).cmdline() #查看進程路徑

[‘/usr/lib/systemd/systemd‘, ‘--system‘, ‘--deserialize‘, ‘21‘]

>>> psutil.Process(1).status() #查看進程狀態

‘sleeping‘

>>> psutil.Process(244).suspend() #掛起進程

>>> psutil.Process(244).kill() #殺死進程

下面我寫一個檢查python進程是否存在,如果存在就返回進程的pid

[root@python home]# vi 2.py

import psutil

for ppid in psutil.pids():

if psutil.Process(ppid).name() == ‘python‘:

print("Python程序已經開啟,進程pid為:%s" % ppid)

[root@python home]# python 2.py

Python程序已經開啟,進程pid為:34512

Python程序已經開啟,進程pid為:35093

Python程序已經開啟,進程pid為:35169

psutil的簡單學習,就到這裏,還有很多都沒有學到,有時間再學了.


PS:個人之見,如果有錯誤的地方,歡迎大家指正

本文出自 “一路向上” 博客,請務必保留此出處http://zhenghong.blog.51cto.com/1676992/1980256

psutil模塊基礎學習