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模塊基礎學習